코드 스멜 123 - '무엇'과 '어떻게'가 혼재
TL;DR: Don't mess with implementation details. Be declarative. Not imperative.
문제
솔루션
문맥
소프트웨어 산업에서 관심사를 분리하는 것은 매우 어렵습니다.
기능적 소프트웨어는 오래 살아남습니다.
구현 소프트웨어는 결합을 가져오고 변경하기가 더 어렵습니다.
현명한 선언적 이름을 선택하는 것은 매일의 도전입니다.
샘플 코드
잘못된
class Workflow {
moveToNextTransition() {
// We couple the business rule with the accidental implementation
if (this.stepWork.hasPendingTasks) {
throw new Exception('Preconditions are not met yet..');
} else {
this.moveToNextStep();
}
}
}
오른쪽
class Workflow {
moveToNextTransition() {
if (!this.canWeMoveOn()) {
throw new Exception('Preconditions are not met yet..');
} else {
this.moveToNextStep();
}
}
canWeMoveOn() {
// We hide accidental implementation 'the how'
// under the 'what'
return !this.stepWork.hasPendingTasks();
}
}
발각
[X] 수동
이것은 시맨틱 및 이름 지정 냄새입니다.
태그
잘못된
class Workflow {
moveToNextTransition() {
// We couple the business rule with the accidental implementation
if (this.stepWork.hasPendingTasks) {
throw new Exception('Preconditions are not met yet..');
} else {
this.moveToNextStep();
}
}
}
오른쪽
class Workflow {
moveToNextTransition() {
if (!this.canWeMoveOn()) {
throw new Exception('Preconditions are not met yet..');
} else {
this.moveToNextStep();
}
}
canWeMoveOn() {
// We hide accidental implementation 'the how'
// under the 'what'
return !this.stepWork.hasPendingTasks();
}
}
발각
[X] 수동
이것은 시맨틱 및 이름 지정 냄새입니다.
태그
결론
좋은 이름을 선택하고 필요한 경우 간접 레이어를 추가해야 합니다.
물론 그들은 우리가 컴퓨팅 리소스를 낭비하고 있으며 우리가 숨기고 있는 통찰력을 알아야 한다고 말하면서 우리와 싸울 것입니다.
처지
코드 냄새 92 - 격리된 하위 클래스 이름
Maxi Contieri ・ 2021년 10월 11일 ・ 2분 읽기
#poo
#webdev
#python
#javascript
코드 냄새 05 - 댓글 남용자
Maxi Contieri ・ 2020년 10월 24일 ・ 2분 읽기
#codenewbie
#tutorial
#beginners
더 많은 정보
코드 냄새 92 - 격리된 하위 클래스 이름
Maxi Contieri ・ 2021년 10월 11일 ・ 2분 읽기
코드 냄새 05 - 댓글 남용자
Maxi Contieri ・ 2020년 10월 24일 ・ 2분 읽기
더 많은 정보
학점
사진 제공: Josh Redd on Unsplash
이 냄새의 아이디어는 다음과 같습니다.
그리고 여기
토니 플러리 #FBPE
@tonyflury
그것은 당신의 첫 번째 진술과 매우 다릅니다. 코드는 항상 '이유'를 설명하는 데 서투릅니다. 급여 계산을 수행하는 코드를 상상해 보세요. 코드가 수행하는 작업을 볼 수 있습니다. 이유는 급여 및 계약 계약에 의해 정의됩니다. 구현을 요구 사항에 연결하는 주석이 필요합니다.
오후 13:32 - 2019년 3월 7일
We are constantly interfacing with other people's code that might not live up to our high standards and dealing with inputs that may or may not be valid. So we are taught to code defensively. We use assertions to detect bad data and check for consistency.
앤드류 헌트
소프트웨어 엔지니어링 좋은 인용구
Maxi Contieri ・ 12월 28일 '20 ・ 13분 읽기
#codenewbie
#programming
#quotes
#software
이 기사는 CodeSmell 시리즈의 일부입니다.
코드에서 냄새 나는 부분을 찾는 방법
Maxi Contieri ・ 2021년 5월 21일 ・ 4분 읽기
#codenewbie
#tutorial
#codequality
#beginners
Reference
이 문제에 관하여(코드 스멜 123 - '무엇'과 '어떻게'가 혼재), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/mcsee/code-smell-123-mixed-what-and-how-4bak
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
We are constantly interfacing with other people's code that might not live up to our high standards and dealing with inputs that may or may not be valid. So we are taught to code defensively. We use assertions to detect bad data and check for consistency.
소프트웨어 엔지니어링 좋은 인용구
Maxi Contieri ・ 12월 28일 '20 ・ 13분 읽기
코드에서 냄새 나는 부분을 찾는 방법
Maxi Contieri ・ 2021년 5월 21일 ・ 4분 읽기
Reference
이 문제에 관하여(코드 스멜 123 - '무엇'과 '어떻게'가 혼재), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mcsee/code-smell-123-mixed-what-and-how-4bak텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)