ソースコード実装論

11月15日の学び(コメントの書き方)

コメントの書き方 ソースコードはロジックのみが記載されている。 「実装の内容」に関して記載するよりは(それは読めばわかる)、「なぜその処理を実装しているのか」という理由を書くこと 「実装の内容」を書く場合は個別のメソッドではなく、メソッド全体…

型とは

質問: 型とはなんですか? 回答:値の意味です。 あえてプログラミング言語に限定せず、NW・IO・HW等も含む広義の意味でのコンピュータがやり取りするのは2進数の羅列だけである。そうした2進数の羅列を意味づけし解釈するには「型」が必要となる。この意味…

リファクタリング

リファクタリングにも定義があったのね。。 リファクタリングの定義 リファクタリングとは外から見たときの挙動は変えずに内部のコードだけを変更すること。 リファクタリングには挙動が変わらないことを保証する手段としのテストコードが必要である。 テス…

汚いソースコードの分類と対策

「綺麗なソースコードはどれも似ているが、汚いソースコードは千差万別だ」by トルストイ 「良いソースコードは短いけど理解に時間がかかるソースコードではなくて、長くても理解するまでにかかる時間が短いソースコード」というのが私の哲学です。 たまには…

変数・メソッドの命名法

順次加筆予定 原則1:抽象的な命名は避ける 例1(Memoryとは?) writeMemoryのMemoryが何を指すのかが不明瞭。USBメモリ?キャッシュメモリ?メインメモリ? メモリという名前のつく単語はコンピュータ関連では複数あるため不明瞭になってしまう。 個別の…

コメントの書き方

順次加筆予定 コメントの減らし方 そもそもコメントを大量に書く必要がある場合は何かが間違っている可能性を疑う コメントのためのコメントは書かない 変数やメソッド名から内部処理がある程度推測できる名前を利用する 何をコメントとするか ソースコード…

エラーの分類

大きく分けてコンパイルエラーとランタイムエラーからなる。 実際問題としてはソフトウェア試験で問題になるのはランタイムエラーに対して適切なエラー処理の実装がなされているかである。 コンパイルエラー(シンタックスエラー) コンパイル時に発生するエ…

メソッドの実装方法

okn-yu.hatenablog.com 補足 上の以前書いた記事の中で1メソッド中のステップ数は10行未満が望ましいと記載した。 ⇒これを実現するには1メソッド1機能という方針を貫徹する必要がある。 ⇒そうすると必然的にメソッド名=機能名となるのでメソッド名から実装…

参照透過性と副作用

難しそうなんだけど参照透過性とか当たり前のようで実はそんなことなかったりする。 多分大多数の関数は参照透過性を満たしていない。 関数でも疎結合を意識していれば自然と副作用も減るし参照透過性も強まるのではないだろうか? 参照透過性 関数が同じ入…

インスタンス変数・カプセル化・グローバル変数

インスタンス変数とカプセル化 グローバル変数は便利だが多用するとモジュール間の密結合化によりバグの温床となり、またスコープが広すぎるためデバッグが困難となる。 クラス内のどこからでもアクセスできるインスタンス変数は疑似グローバル変数と同じ振…

モジュールとインタフェース

凝縮度と結合度で少しわかってきた(つもり)なんだけど、自分なりの言葉でまとめてみよう。 モジュール・インタフェースのあるべき論 機能・責任・担当毎にはっきりと分割されているのが良いモジュール。 モジュールのインタフェースは少なくシンプルなほど…

結合度

結合度の高い順に記載。結合度の内容が参照したサイト毎に微妙に異なるのが困る。 これからクラス図を見るときは結合度も意識しよう。 副作用*1との関係も含めて整理してみたい。 基本の考え方 変数のスコープがローカルの結合度 受け渡しのパラメータがデー…

凝縮度に関して

凝縮度なんて情報処理試験勉強のための用語だと思ってました。用語を覚える必要はないですがこれらの根底にある考え方を理解するとソースコードの実装が捗りそうです。凝縮度が低いとモジュールのAPIに一貫性がないため再利用性が低くなるんですよね。凝縮度…

ソースコードの7つの品質特性に関して

はじめに オブジェクト指向できていますか? from Moriharu Ohzu www.slideshare.net によると、Jeff Bay氏によりソースコードの7つの品質特性として以下が提唱されている。 凝縮度 疎結合 重複なし カプセル化 テスト容易性 可読性 フォーカス 要するに特…

ソースコード実装における定量的な指標に関して

はじめに github.com上記のソースコードがなんとなくもやもやして気に食わない。このもやもや感の原因は自分の中でどんなコードが良いかというソースコード実装の哲学がないからだと思う。そもそも良い悪いを議論する指針が無いから判断しようがないのが問題…