[clean Code] TIL(22.02.23)


*これは<ノマド開発者ハンドブッククラブ-クリンコード-3週間完了クラス(第2期)>の間に作成されたTILです.
* TIL (Today I Learned)
22.02.23
*今日の範囲
第三章関数
📖 覚えたい内容

  • p.42小さい!関数を作成する最初のルールは「小さく!すべて関数を作成する2番目のルールは「もっと小さい!」です.すべて

  • p.43ブロックとインデント:

  • if/else文、while文などのブロックは1行でなければなりません.(...) この文の意味は,関数がオーバーラップ構造を生成するほど大きくならないことを意味する.

  • p.44一つだけやろう!関数は一つのことをしなければなりません.そのことをうまくやらなければならない.それしかできない.

  • p.49~50は記述的な名前を使う!
  • 名前が長くてもいいです.長くて叙述的な名前は短くて難しい名前よりいいです.(...) 時間をかけて名前を決めても大丈夫です.
  • 名前をつけるには一貫性が必要モジュール内では、関数名は同じ文、名詞、動詞を使用します.

  • p.54関数因数:単項関数要求関数と因数は動詞/名詞対である.例えば、write(name)は理解しています.(...) 関数名はキーワードを追加する形式です.たとえば、assertEqualsよりassertExpectedEqualsAcutalの方が良いです.これで買収の順番を覚える必要はありません.

  • p.60繰り返さないで!:重複はソフトウェア内のすべての悪意の根源かもしれません.

  • p.61ソフトウェアを書く行為は一般的な作文と似ている.論文や記事を書くときは、まず考えを記録して、読みやすさを調整します.

  • p.62本当の目標はシステムという物語を話すことにあることを覚えておいてください.
  • 読んだ感想
  • 「割る」-分けが小さいので反応を思い出しました!やりたい部分
  • 1章で名前を読んだ後、仕事中になるべく名前を決めていたら、名前が長くなって悩んでいたのが正しいのか、その悩みについての答えが得られたようで気持ちがいい.
  • 前編2章では、筆者がコードを書く過程が書くようになったと評価し、似ているが異なる決議的観点から、著者が書くこととソフトウェアを書くことの類似点を提示し、非常に興味深い.言葉の面では違うようですね.
  • 🧐 疑問、理解できない内容

  • プログラミングの抽象?

  • 抽象化は複雑なソフトウェアシステムを効率的に設計し、実施する方法である.

  • データまたはプロシージャを意味類似、実行プロシージャ類似の概念として抽象化する.

  • class ImplementAbstraction {
      // method to set values of internal members
      set(x, y) {
        this.a = x;
        this.b = y;
      }
    
      display() {
        console.log('a = ' + this.a);
        console.log('b = ' + this.b);
      }
    }
    
    const obj = new ImplementAbstraction();
    obj.set(10, 20);
    obj.display();
    // a = 10
    // b = 20

  • ソース
  • https://developer.mozilla.org/ko/docs/Glossary/Abstraction
  • https://fierycoding.tistory.com/42

  • SRP(Single Responsibility)?
  • 全ての等級は1つの責任のみを負い、等級は完全にその責任を負う  カプセル化必須
  • 出典:https://ko.wikipedia.org/wiki/単一責任の原則

  • OCP(Open Closed Principle)
  • ソフトウェアオブジェクト(クラス、モジュール、関数など)は拡張に対して開放的であり、修正に対して閉鎖的であることがプログラミングの原則である.
  • 展開:これは,モジュールの動作が拡張できることを意味する.アプリケーションの要件が変更されると、モジュールを拡張してこれらの変更に適応するために、新しいアクションを追加できます.つまり、モジュールの作業を変更することができます.
  • 修正クローズ:モジュールのソースコードまたはバイナリコードを変更することなく、モジュールの機能を拡張または変更できる.モジュールの実行可能なバイナリ形式またはリンク可能なライブラリ(WindowsのDLLやJavaの.jarなど)に触れる必要はありません.
  • 出典:https://ko.wikipedia.org/wiki/オープン-クローズの原則

  • オブジェクト向けプログラミング
  • オブジェクト向けプログラミング けいさんきプログラミングモデル その一つです.オブジェクト向けプログラミング コンピュータプログラム コマンドリストの観点から、複数の独立した単位、すなわち「オブジェクト」の集合として理解される.各オブジェクト  情報往来、  処理可能データ#データ#
  • 出典:https://ko.wikipedia.org/wiki/オブジェクト向けプログラミング