可読性
TRANSCRIPT
1
可読性
小川 翔二郎
2010/06/28 (Wed)
目次
挨拶
SE・PG
可読性
まとめ
2
挨拶
小川 翔二郎
15807016
Martin 研所属
将来は SE か PM になりたい
とても緊張してる
3
SE・PG について
SE = システムエンジニア
PG = プログラマ
SE の仕事、 PG の仕事
上流工程、下流工程
4
大まかな開発の流れ
5
要件定義
基本設計
詳細設計
プログラミング
テスト
PG
SE
PM
システム開発はバグとの戦い
システム開発にバグはつきもの
バグを無くすのが理想
バグが起きても・・・
コードが見やすいとどこでバグがあるかわかる
運用・管理の人も楽
可読性が重要
6
可読性
プログラムの見やすさ・読みやすさ
可読性の要素
インデント
空白・桁合わせ
変数名・関数名
明示的な括弧
コメント
実行とは無関係7
インデント
可読性向上のための基本技術
制御構造の範囲を明示
8
void main(){a=0;for(i=10;i<=20;i++){if(a>i){printf("Hi");}a+=2;}}
void main(){
}
a=0;for(i=10;i<=20;i++){
}
if(a>i){
}a+=2;
printf("Hi");
K&R スタイル
空白
演算子の関係が明白
様々なスタイルがある
9
for(i=10;i<=20;i++){if(i%2==0){
printf("Hi");}
}
for (i = 10; i <= 20; i++) {if (i % 2 == 0) {
printf("Hi");}
}
桁合わせ
隣接する行の桁位置を合わせる
誤字や値抜けを見つけやすい
10
array1[4] = {'a', 'b', 'c', 'd'};array2[4] = {'foo', 'bar', 'baz', 'quux'};
int a = 10000, b = 500, c = 3;
printf("A = %5d\n", a);printf("B = %5d\n", b);printf("C = %5d\n", c);
変数名・関数名
英語でつける
動作や値がわかる名前
適度な長さ
Camal 記法
最初の単語のみ小文字で始め、以降単語の先頭文字は大文字
例. isPrime(int n), toLower(char c)
11
変数名・関数名(2)
Pacal 記法
各単語の先頭文字は大文字
例. IsPrime(int n), ToLower(char c)
アンダーバー区切り
単語は全て小文字で区切りはアンダーバー
例. is_prime(int n), to_lower(char c)
12
明示的な括弧
無駄な括弧は不要
優先順位が分かりにくいときは明示的につける場合がある
例: a && b || c
13
(a && b) || c
コメント
コードを読めばわかるようなことは書かない
関数(メソッド)の場合は複数行
14
/*関数名:sum引 数:int max返り値:total = (1 から max までの合計値)説 明:total を表示する*/int sum(int max){
int total = (1 + max) * max / 2; //合計値の計算printf("%d\n", total); //合計値を表示するreturn total;
}
まとめ
バグの修正やプログラムの追加のためにも可読性が高いほうがいい
日頃から可読性を意識したプログラムを書く
可読性の高いプログラムの記述は、自分のためでもある。
ほとんどの場合、やりすぎにはならない
15
予定(未定)
第1回 プログラムの可読性(今日)
第2回 計算速度とオーダー
第3回 再帰と動的計画法とメモ化
16
ありがとうございました
17