課題の実装の進め方

: author

須藤功平

: institution

株式会社クリアコード

: content-source

実践リーダブルコード

: date

2015-03-06

: allotted-time

5m

: theme

clear-code

実装する目的

((‘tag:center’)) 午後の作業の布石n ↓

* 課題の仕様を理解するため
* 読まれることを意識して\n
  書かれたコードを用意するため
  * リーダブルなコードを書いて!

目的じゃないこと

* テクニックをたくさん覚える
* 難しいプログラムでも\n
  実装できるようになる
* 速く実装できるようになる

課題の傾向

* 技術的に難しいことは\n
  意図的に避けている
* 段階的に改良していく
* 時間内で実装しきれない分量
  * ((*すべて実装する必要はない!*))

練習としてやること

仕様1を実装n ((‘note:進め方の詳細はtask.mdを参照’))

メモ

* 工夫したことはmemo.mdに書く
* memo.mdはリポジトリーにpush
* ↓を含める
  * 実際のコードのURL
  * リーダブルな理由

メモ例

# _
## 統一されたスタイル ← リーダブルな書き方の名前

URL: https://github.com/kou/.../commit/eb02be

コード:
@@ -64,7 +64,7 @@ void add_recipe_to_RecipeList(...) {
 void open_RecipeList(RecipeList *list, char *path) {
   FILE *fp;
   /* ファイルを開く */
-  if ((fp = fopen(path , "r")) == NULL){
+  if ((fp = fopen(path , "r")) == NULL) {
     fprintf (stderr, "ファイルが開けません\n");
     fclose(fp);
     exit(EXIT_FAILURE);

理由:
ファイル内でスタイルを統一しているので読みやすくなっている。

リーダブルコードとは

* 読む人基準
  * 「読む人」が 読みやすいなら\n
    リーダブル
* 読む人の視点を意識してみて
  * どんな人が読む?
  * どんな前提知識がある?

困ったら1

* チューターに相談
  * チューターは((*答えを教えない*))
  * 一緒に考えてくれる
* なんで!?答えを教えてよ!
  * 講師が禁止している\n
    (('note:(参加者が考える機会を奪わないため)'))
  * チューターは意地悪ではない

困ったら2

* まわりの参加者に相談
  * 答えを教えてもよい
  * 一緒に考えてもよい
* 条件
  * 答えを教えるときは理由も伝える\n
    (('note:(教える参加者が考える機会になる!)'))
  * 聞く人は理由も聞く\n
    (('note:(考え方を知ると新しい視点でコードを読める!)'))