코드 냄새: 함수 이름에 AND 없음



함수는 단일 책임 원칙을 준수해야 합니다. 즉, 한 가지 일만 수행해야 한다는 의미입니다. 따라서 함수 이름에 "AND"가 포함되어 있으면 너무 많은 일을 하고 있다는 의미입니다. 해결책? "AND"를 제거하고 별도의 기능으로 분할하세요 👍

// ❌ Bad
function teaAndSugar () {}

// ✅ Better
function tea () {}
function sugar () {}

단일 책임 원칙(SRP)



Every module should have one single responsibility. This means two separate concerns/responsibilities/tasks should always be implemented in separate modules.



Principles Wiki: SRP

그리고 근거는 다음과 같습니다.

When this rule is not adhered to, one module has several tasks. If one of these tasks changes, there is the risk that this also has an effect on the other task that normally should be independent. Thus unrelated functionality may break.



단일 책임 원칙을 따를 때 보다 유연하고 모듈화된 코드 기반을 생성할 수 있습니다.

비개발 용어의 SRP 이점



비 개발자 용어로 이것을 설명하려고 노력합시다. 당신이 요리사이고 주방 재료를 주문하려고 한다고 가정해 봅시다. 두 명의 판매자가 옵션을 가지고 접근합니다. 판매자 A는 귀하에게 필요한 모든 재료가 있으며 모든 것이 혼합되어 있다고 말합니다. 판매자 B는 필요한 모든 재료를 가지고 있으며 별도로 판매할 것이라고 말합니다. 어느 것을 사시겠습니까? 확실한 판매자 A 옵션은 모든 것이 미리 혼합되어 있기 때문에 꽤 좋습니다. 하지만 만들 수 있는 레시피는 3가지 재료가 모두 필요한 레시피에 한정되어 있기 때문에 매우 제한적입니다. 하지만 판매자 B와 함께라면 만드는 레시피는 무궁무진합니다. 디저트와 맛있는 레시피를 만들 수 있습니다 👩‍🍳

판매자 A:

미리 혼합된 재료를 구입하면 3가지 항목이 모두 필요한 레시피로 제한됩니다.

function flourAndSugarAndEgg () {}

판매자 B:

개별 재료를 구매하면 제한이 없어지고 훨씬 더 많은 레시피를 만들 수 있습니다 🏆

function flour () {}

function sugar () {}

function egg () {}

유지보수성 이점



이 규칙을 고수하는 또 다른 좋은 점은 유지 관리 용이성입니다. 막 시작할 때 모든 것을 하나로 모으는 것이 훨씬 쉬워 보일 수 있습니다. 그러나 시간이 지남에 따라 더 많은 기능을 추가하거나 변경함에 따라 모든 작업을 수행하는 하나의 단일 기능이 유지 관리하기가 매우 지저분해집니다.

비개발 용어로 설명



다른 non-dev 용어 설명으로 이것을 설명하겠습니다. 당신이 큰 레고 제작자이고 새로운 레고 세트를 구입했다고 가정해 봅시다. 새 세트를 열고 모든 부품을 용기에 담는 것에 매우 흥분됩니다. 안타깝게도 다음 주에 최종 시험이 있어서 아직 구축할 시간이 없습니다. 몇 주 후 부자 이모가 레고 세트를 몇 개 더 구입합니다. 우리 모두가 레고 세트가 터무니없이 비싸다는 것을 알고 있기 때문에 이모가 부자라고 말했습니다 😂. 다시 새 세트를 열고 큰 문제가 아니라고 생각하면서 동일한 컨테이너에 덤프합니다. 부자 이모에게 뒤지지 않기 위해 부자 할머니도 당신의 사랑을 얻고 싶어합니다. 그래서 그녀는 당신을 위해 더 많은 레고 세트를 구입합니다. 다시 말하지만, 큰 문제가 될 것이라고 생각하지 않았습니다. 모든 것을 열고 동일한 컨테이너에 모두 버립니다. 좋아요, 몇 주가 지났고 이제 레고 세트를 만들 준비가 되었습니다. 무슨 일이 있었는지 맞춰보세요? 당신은 지금 벽에 머리를 두드리고 있습니다. 모든 조각이 하나의 단일 용기에 섞여 있기 때문에 어느 것이 어떤 것인지 알 수 없습니다. 그러나 모든 레고 세트를 자체 컨테이너에 보관했다면 이 문제가 발생하지 않았을 것입니다 💩

그렇기 때문에 하나의 함수는 한 가지 일만 수행해야 합니다. 한 가지 이상의 일을 할 때. 지금은 그렇지 않은 것처럼 보일 수 있지만 시간이 지남에 따라 요구 사항이 변경됨에 따라 이 기능이 부풀어 오르고 유지 관리가 매우 어려워질 것입니다.

커뮤니티 입력



  • : 또 다른 프로 팁: 동사로 ​​함수 이름을 시작하십시오. 이것은 당신의 의도를 더 명확하고 설명하기 쉽게 만듭니다. "이것은 차를 만들고 저것은 설탕을 추가합니다."

  • function makeTea() {}
    function addSugar() {}
    

  • : getData()와 같은 일반 함수 😝 음... 어떤 유형의 데이터인가요? 최상위 유틸리티가 아닌 이상 getUser() , getPost()
  • : AND를 통일된 단어로 대체하여 drinkTeadrinkSugar를 사용하는 것을 선호합니다. 이 경우 음료
  • 입니다.

    자원


  • Things I Learnt The Hard Way
  • Why is the use of conjunctions in method names a bad naming convention?
  • SamanthaMing: Bad Variable Names to Avoid
  • SamanthaMing: How to give your boolean variables a better name
  • Understanding SOLID Principles: Single Responsibility
  • Principles Wiki: SRP



  • 읽어주셔서 감사합니다 ❤
    안녕하세요! | | Facebook | Medium | Blog

    좋은 웹페이지 즐겨찾기