可読性

17

Click here to load reader

Upload: honmadayo

Post on 07-Jul-2015

973 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 可読性

1

可読性

小川 翔二郎

2010/06/28 (Wed)

Page 2: 可読性

目次

挨拶

SE・PG

可読性

まとめ

2

Page 3: 可読性

挨拶

小川 翔二郎

15807016

Martin 研所属

将来は SE か PM になりたい

とても緊張してる

3

Page 4: 可読性

SE・PG について

SE = システムエンジニア

PG = プログラマ

SE の仕事、 PG の仕事

上流工程、下流工程

4

Page 5: 可読性

大まかな開発の流れ

5

要件定義

基本設計

詳細設計

プログラミング

テスト

PG

SE

PM

Page 6: 可読性

システム開発はバグとの戦い

システム開発にバグはつきもの

バグを無くすのが理想

バグが起きても・・・

コードが見やすいとどこでバグがあるかわかる

運用・管理の人も楽

可読性が重要

6

Page 7: 可読性

可読性

プログラムの見やすさ・読みやすさ

可読性の要素

インデント

空白・桁合わせ

変数名・関数名

明示的な括弧

コメント

実行とは無関係7

Page 8: 可読性

インデント

可読性向上のための基本技術

制御構造の範囲を明示

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 スタイル

Page 9: 可読性

空白

演算子の関係が明白

様々なスタイルがある

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");}

}

Page 10: 可読性

桁合わせ

隣接する行の桁位置を合わせる

誤字や値抜けを見つけやすい

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);

Page 11: 可読性

変数名・関数名

英語でつける

動作や値がわかる名前

適度な長さ

Camal 記法

最初の単語のみ小文字で始め、以降単語の先頭文字は大文字

例. isPrime(int n), toLower(char c)

11

Page 12: 可読性

変数名・関数名(2)

Pacal 記法

各単語の先頭文字は大文字

例. IsPrime(int n), ToLower(char c)

アンダーバー区切り

単語は全て小文字で区切りはアンダーバー

例. is_prime(int n), to_lower(char c)

12

Page 13: 可読性

明示的な括弧

無駄な括弧は不要

優先順位が分かりにくいときは明示的につける場合がある

例: a && b || c

13

(a && b) || c

Page 14: 可読性

コメント

コードを読めばわかるようなことは書かない

関数(メソッド)の場合は複数行

14

/*関数名:sum引 数:int max返り値:total = (1 から max までの合計値)説 明:total を表示する*/int sum(int max){

int total = (1 + max) * max / 2; //合計値の計算printf("%d\n", total); //合計値を表示するreturn total;

}

Page 15: 可読性

まとめ

バグの修正やプログラムの追加のためにも可読性が高いほうがいい

日頃から可読性を意識したプログラムを書く

可読性の高いプログラムの記述は、自分のためでもある。

ほとんどの場合、やりすぎにはならない

15

Page 16: 可読性

予定(未定)

第1回 プログラムの可読性(今日)

第2回 計算速度とオーダー

第3回 再帰と動的計画法とメモ化

16

Page 17: 可読性

ありがとうございました

17