プログラミングや電子工作などについての記事がほとんどです

良いコードへの道

0 件のコメント
読んでいて面白いサイトを見つけました.
良いコ-ドへの道―普通のプログラマのためのステップアップガイド:連載|gihyo.jp … 技術評論社
コードの可読性や性能を向上するためにはどんなコーディングを心がけるべきかを書いた連載記事です.現在は「良いコードを書く技術」というタイトルで本も出版されているようです.そこから気になったキーワードについて調べました.

ブロックスコープ

スコープとは変数が使用できる範囲のことを言います.ブロックスコープというのは,定義された場所からそのブロックが終わるまで,変数が使用可能ということです.
このルールはJavaやCなど多くの言語で使用されているのですが,JavaScriptにはブロックコープがないようです.普段JavaScriptを自分で書いたりしないので,知ってちょっと驚きました.

アクセス修飾子

フィールド変数などのスコープを指定するものです.public,private,package private,protectedが存在します.基本的にprivateで用いるのが基本らしいです.フィールド変数に外部や下位クラスからアクセスしたい場合には,セッタ・ゲッタなどのアクセサメソッドを用意して使うと良いです.

//フィールド変数
private int count

//セッタ
public void setCount(int count){
  this.count = count;
}

//ゲッタ
public int getCount(){
  return this.count
}

こんな感じで指定してやります.
アクセス修飾子を指定しない場合,JavaやC#ではprivateになるようです.

final変数の使用上の注意

final変数を使用することで,クラス変数を定数として使用することが可能になります.finalを付加することで外部からの値の書き換えが不可能になるため,アクセス範囲をpublicとしても比較的安心です.
しかし,変更が不可能になるのは値のみであるため,参照型変数の場合は参照先の値を変更することで実質的に書き換えが可能になってしまうので注意が必要です.もし参照型をfinal変数として使用する場合には値の書き換えが不可能なコレクションを使う必要があります.
【参考】
final変数とは : JavaA2Z

ユーティリティクラス

知らない用語だったので検索したところ,噛み砕いてわかりやすく書いてあるサイトを見つけたので掲載しておきます.ユーティリティクラスの定義は,メンバが全てstaticなクラスです.実際に作る場合にはインスタンスを作らせないように,privateなコンストラクタを実装する必要があります.
【参考】

クラスのネスト

クラスの作り方を変えてコードの保守性を向上する方法は,クラスを別ファイルに分ける以外にも,クラスをネストすることによる方法も存在します.スコープの管理をしっかり理解していれば,有効に働きそうです.

インナークラス

エンクロージング型のインスタンスに関連付ける必要があるため,そのインスタンス変数にアクセスする際には利用しやすい.わかりやすく書けば,ネストしたクラスで,かつ非staticなクラスです.
どういうものかわかっても使いどころが良くわからなかったのですが,GUIアプリケーションのイベントハンドラ定義などに使えるようです.使い道がやはりわからないので教えて偉い人….

無名(匿名)クラス

クラスに名前を付けずに利用するクラスのことをいいます.
コンストラクタが使えず,継承やインターフェースの実装なども行えないなど,制約が多いです.単純かつ,コンストラクタが必要でない,再利用しないクラスに有効です.

【参考】
話題がバラバラなのでまとめようにもまとめづらいのですが,保守性・可読性の高いコードを書くためには多くの基礎知識がいるのだと感じました.色んなコードを読んでいくうちにこういうテクニックが使えるようになったらいいなあ.

0 件のコメント :

コメントを投稿