코드 냄새 310 – 일반 날짜 이름이 코드를 깨뜨리는 이유

코드 냄새 310 – 일반 날짜 이름이 코드를 깨뜨리는 이유

‘날짜’가 당신이 알아야 할 것을 말하지 않을 때


TL; DR : 일반 “날짜”레이블 대신 역할과 비즈니스 목적을 드러내는 설명 날짜 이름을 사용하십시오.


고려해야 할 문제

  • 불분명 한 목적
  • 유지 보수 악몽
  • 가독성이 좋지 않습니다
  • 디버깅 혼란
  • 이름을 제안하는 유형
  • 모호하고 짧은 이름
  • 숨겨진 의도
  • 잘못된 맥락
  • 추가 추측
  • 어려운 검색
  • 오해의 소지가있는 재사용
  • 모호한 목적
  • 가독성 감소
  • 오해 위험

제안 된 솔루션 😃

  1. 설명 이름을 사용하십시오
  2. 비즈니스 의도를 드러냅니다
  3. 이름을 일관성있게 유지하십시오
  4. 도메인 언어를 따르십시오
  5. 의미 적 의미를 추가하십시오
  6. 코드 선명도를 향상시킵니다
  7. 컨텍스트 단어를 추가하십시오
  8. 일반적인 용어를 피하십시오
  9. 댓글을 더 나은 이름으로 바꾸십시오

리팩토링

문맥

응용 프로그램에서 날짜와 함께 작업하면 종종 ‘날짜’라는 이름이라는 변수, 메소드 또는 속성이 발생합니다.

이 일반적인 이름 지정은 다른 개발자 (미래 자아 포함)를 강제로 코드 컨텍스트를 파헤쳐 날짜가 나타내는 것을 이해하도록합니다.

생성 시간을 추적합니까? 게시 날짜? 만료일? 마지막 수정 날짜?

모호성은 유지 보수 오버 헤드를 생성하고 다른 날짜 목적을 혼합 할 때 결함의 가능성을 증가시킵니다.

샘플 코드 📖

잘못된

class Article {
  final DateTime date;
  final String title;
  final String content;

  Article({
    required this.date,
    required this.title,
    required this.content,
  });
}
class Article {
  final DateTime publishDate;
  final String title;
  final String content;

  Article({
    required this.publishDate,
    required this.title,
    required this.content,
  });
}

발각

  • [x] 반자동

일반적으로 “날짜”, “시간”, “타임 스탬프”또는 유사한 비판적 시간 이름으로 지정된 변수, 메소드 또는 속성을 볼 때이 냄새를 감지 할 수 있습니다.

어떤 날짜에 영향을 미치는지 명확하게 표시하지 않고 날짜를 조작하는 방법을 찾으십시오.

코드 검토 도구 및 정적 분석은 일반 명명 패턴을 플래그 할 수 있습니다. 그러나 수동 검사는 종종 비즈니스 컨텍스트를보다 효과적으로 보여줍니다.

날짜가 무엇을 나타내는 지 설명하는 의견도 검색 할 가치가 있습니다.

숫자 접미사 (Date1, Date2)가있는 다중 날짜 필드는 또 다른 힌트입니다.

예외 🛑

때로는 특정 날짜 목적이 구현마다 변하는 진정한 일반적인 날짜 유틸리티 또는 추상 인터페이스에서 작업합니다.

이러한 드문 경우에는 일반적인 이름 지정이 적절할 수 있지만 예상 시맨틱을 명확하게 문서화해야합니다.

\

태그

  • 나미

수준

  • [x] 초보자

Biejection이 중요한 이유

코드는 실제 개념과 프로그램 표현 사이의 명확한 일대일 서신을 유지해야합니다.

날짜를 일반적으로 이름을 지정하면 독자가 문맥에서 실제 의미를 유추하도록 강요 함으로써이 격차를 끊습니다.

실제 세계에서 날짜는 출판 날짜, 창조 날짜, 만료 날짜 및 생년월일과 같은 특정 목적을 갖습니다.

코드는 이름 지정을 통해 이러한 고유 한 개념을 직접 반영하여 도메인 개념과 코드 요소간에 명백한 매핑을 만듭니다.

에이 PublishDate 인생의 실제 출판 날짜에 해당합니다.

사용하는 경우 날짜이 매핑을 끊습니다.

AI 생성에 대한 메모 generation

AI 코드 생성기는 특정 비즈니스 컨텍스트가 부족할 때 일반 명명 패턴에 기본값을 기본으로하기 때문에이 냄새가 자주 발생합니다. 그들은 종종 시간 데이터의 도메인 별 목적을 고려하지 않고 “날짜”를 안전하고 보편적 인 이름으로 제안합니다.

일부 AI 생성기는 간결함을 선호하기 때문에이 냄새를 만듭니다. 날짜 그 역할을 명확히하는 대신.

AI 감지 🧲

AI 도구는 비즈니스 도메인에 대한 명확한 지침과 각 날짜 속성 및 방법의 특정 목적에 대한 명확한 지침을 제공 할 때이 냄새를 쉽게 식별하고 고칠 수 있습니다.

현대 AI 조수는 적절한 도메인 별 정보가 제공 될 때 상황에 맞는 이름을 제안하는 데 탁월합니다.

시도해보십시오!

기억하십시오 : AI 조수는 많은 실수를합니다

제안 된 프롬프트 : 일반적인 날짜/시간 변수 이름을 비즈니스 목적을 명확하게 나타내는 설명 이름으로 바꾸십시오. 각 날짜 필드에 대해 도메인에서 어떤 특정한 순간이나 이벤트를 나타내는지를 고려하고 (생성, 출판, 만료, 마지막 액세스 등) 그에 따라 이름을 지정하십시오.

| 적절한 지침없이 | 특정 지침으로 | | —- | —- | | chatgpt | chatgpt | | 클로드 | 클로드 | | 당황 | 당황 | | Copilot | Copilot | | 당신 | 당신 | | 쌍둥이 자리 | 쌍둥이 자리 | | Deepseek | Deepseek | | 메타 ai | 메타 ai | | 그로크 | 그로크 | | Qwen | Qwen |

결론

일반 이름을 사용하면 부담을 독자에게 전환합니다. 비즈니스 이야기를하는 이름을 선택하십시오. 이름 지정 날짜는 구체적으로 단순한 페다 트리가 아닙니다. 코드가 의도를 명확하게 전달하는 것입니다. 당신이 입력 한 몇 가지 추가 캐릭터는 미래의 자아를 포함하여 미래의 독자들에게 수많은 혼란을 절약합니다.

관련 독서

추가 정보


::: 경고 면책 조항 : 코드 냄새는 제 생각입니다.

:::


::: 정보 크레디트 : Unsplash의 Towfiqu Barbhuiya의 리드 이미지

:::


정확한 이름 지정은 미용 결정이 아니라 디자인 결정입니다.

에릭 에반스


이 기사는 CodesMell 시리즈의 일부입니다.

\

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다