コードのにおい:いいえ、関数名



機能は一つの責任原理に固執するべきである.一つのことと一つだけのことを行うべきである.あなたの関数名が“and”を含んでいるなら、それはあなたがやり過ぎていることを意味します.解決策"AND "を削除し、別の関数に分割する👍
// ❌ Bad
function teaAndSugar () {}

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

単一責任原則


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.


単一の責任原則に従うと、より柔軟でモジュラーなコードベースを作成します.

非dev条件におけるSRP利益


これを非dev用語で説明しようとしましょう.あなたがシェフであり、あなたの台所の食材を注文しようとしているとしましょう.つの売り手は、彼らのオプションであなたに接近します.売り手Aは、私たちはあなたが必要なすべての成分を持っているとすべてがあなたのためにミックスされていることを指示します.セラーBは、私たちはあなたが必要なすべての成分を持っていると個別にそれらを販売することを指示します.どちらを買うのですか.すべての中古ミックスされているので、確かにセラーのオプションはかなり良いです.しかし、あなたが作ることができるレシピは非常に限られているので、すべての3成分を必要とするレシピに限られているため.しかし、売り手Bで、あなたが作るレシピは無限大です.あなたはデザートとおいしいレシピを作ることができます👩‍🍳
売り手A :
購入中古混合成分は、すべての3項目を必要とするレシピを制限します.
function flourAndSugarAndEgg () {}
売り手B :
個々の成分を購入する制限を削除し、はるかに多くのレシピを作成することができます🏆
function flour () {}

function sugar () {}

function egg () {}

保全性


この規則に固執するもう一つの大きなことは保守性です.あなたがちょうど起動すると、確かにそれはすべて一緒にすべてを置くためにはるかに簡単に思えるかもしれません.しかし、私はあなたが時間をかけて、より多くの機能を追加したり、変更を加えると、すべてを行う1つの特異な関数が維持するために非常に厄介になることを保証します.

非dev条件で説明された


もう一つの非dev用語解説でこれを説明しましょう.あなたが大きいレゴビルダーであると言いましょう、そして、あなたはあなた自身に真新しいレゴセットを買いました.あなたは、新しいセットを開いて、容器にすべての部分をダンプすることを興奮させます.残念なことに、あなたはまだそれを構築する時間がないので、次の週の最終試験を持っている.数週間後、あなたのリッチおばは、いくつかのLEGOセットを購入します.私は、あなたのおばが金持ちであると言いました😂. 再度、新しいセットを開き、同じ容器にそれらをダンプする、それは大きなことだと思う.あなたの裕福な叔母に追い出されないように、あなたの豊かなおばあちゃんもあなたの愛を獲得したいので、彼女はあなたのために多くのレゴセットを購入する.再び、あなたはそれが大きい取引であると思いませんでした.OK、数週間が経ち、今あなたのレゴセットを構築する準備が整いました.何が起こったのだろう?あなたは今壁に頭をノックしている.すべての作品が1つの単一のコンテナに混合されるので、あなたはどちらがどれであるかについて、わかりません.しかし、もしあなたがすべてのレゴセットを自分の容器に保管していたら、この問題はないでしょう💩
一つの関数は一つのことと一つだけのことをするべきです.それが1つ以上のことをしているとき.それは今のように見えないかもしれませんが、時間とともに変化する要件で、この機能は肥大化し、維持するのが非常に困難になります.

コミュニティ入力


  • 別のプロのヒント:動詞で関数名を起動します.これはあなたの意図をより明確に説明しやすくします
  • function makeTea() {}
    function addSugar() {}
    
  • : ジェネリック関数getData() 😝 ……どのようなデータの種類?トップレベルのユーティリティでない限り、私は特定のようなものが好きですgetUser() , getPost() , など
  • : 私は好むdrinkTea and drinkSugar この場合には、統一された単語に置き換えて、飲むことです
  • 資源

  • 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