課題の実装の進め方

: author

須藤功平

: institution

株式会社クリアコード

: content-source

実践リーダブルコード

: date

2015-06-24

: allotted-time

5m

: theme

clear-code

実装する目的

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

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

目的じゃないこと

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

課題の傾向

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

メモを書く

* 工夫したことはissueに書く
  * 1つのissueに1つの工夫でOK
* メモに含めること
  * 実際のコードの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

* チューターに相談
  * チューターは((*答えを教えない*))
  * 一緒に考えてくれる
* 答えを教えない理由
  * 参加者が考える機会を奪わないため
  * 一緒に考えると新しい視点が増える

困ったら2

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

実装開始

* 仕様
  * task.md
* 練習
  * 講師がtask.mdを読んで説明
  * 仕様1をみんなで実装
  * 実装できたら休憩→仕様2以降実装