Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プログラムと名前にまつわる座談会

 プログラムと名前にまつわる座談会

たかが命名、されど命名。名前から考えるよいコード【タガヤス その4】発表資料(3)
https://tagayas.connpass.com/event/80363/

Infiniteloop

October 17, 2023
Tweet

More Decks by Infiniteloop

Other Decks in Programming

Transcript

  1. 名前と設計 名前「販売」について考える • メニューを見せる • 注文を受ける • 注文をキッチンに伝える • お金のやり取りを行う

    • 商品番号を渡す • 商品番号に紐づく商品を渡す 「お店」は出て来なかった(お客は隠れているだけかも)
  2. 名前と設計 • メニュー提供 • 注文カウンター ◦ 注文を受ける ▪ 注文が正しいか確認する ▪

    注文をキッチンに伝える ▪ お金のやり取りを行う ▪ 受け取り番号を発行する • 提供カウンター ◦ 商品の提供 ▪ 受け取り番号が必要 ▪ 商品が完成していれば提供する
  3. 名前と設計 • 目につく名前に惑わされない • 名前(境界)を理解する ◦ フォーカスしたい名前の本質を知る • より小さい概念(の関係性)を見つける ◦

    カウンターは物理的には1つかもしれない ◦ 概念としては「注文」「提供」の二つがある • 可能なら具体的な名前を付け直す
  4. 名前に迷ったとき • つぶやいてみる ◦ 販売は商品を提供する。販売はメニューを変更する。 ◦ 提供カウンタは商品を提供する。提供カウンタはメニューを変更する。 • となりの人に聞いてみる ◦

    2,3人が首を傾げなければ、たぶん大丈夫 ◦ できれば会話してみると良い • 英語に迷ったとき ◦ 日本語 > 翻訳 > 画像検索 ◦ 試している最中
  5. ハンガリアン記法 • システムハンガリアン ◦ 変数の型を表現するタグをつける ◦ int なら i, long

    なら l とかで iCount, lCountとする ◦ 型があれば保証してくれる情報じゃない? ◦ その変数の型が変更された時に保守が大変 ▪ 逆に混乱の元になる ◦ 推奨されない
  6. ハンガリアン記法 • 現在 ◦ usというタグの意味を知らないと理解できない ▪ 省略の問題が残る ◦ us(タグ)よりunsafe(名前)の方が読み手を選ばない ◦

    型の力を強化できる ▪ strong typedefなどにより強力な型付けが可能 ◦ 意思は受け継ぎつつ非推奨かなと思う
  7. 曖昧な名前 • Get ◦ プログラムは、データをやり取りするので至る所に「取得」がある ◦ どこから取得したのか? どう取得したのか? ◦ 特にインフラレイヤでは気を付けたい(DBとかデバイス付近)

    ◦ メンバのゲッター程度の軽い処理に対して記述されるもイメージ • Check ◦ チェックした後は?あっていればいいのか?間違っていればいいのか? ◦ CheckPost(ポストである確認) より AllowPostOnly(ポストのみ許可) ◦ CheckBox->Check() チェックマークをつける?(ちょっと無理やり) • Filter ◦ 除外するのか、選ぶのか・・・Selectとかどうですかね。