rabbit-slide-kou-schoo-readable-code-2014-12 2014.12.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ef138a2efa333bae81b5af0da93222988f23e601
4
+ data.tar.gz: 88e3eff5a8959b737fb4a5a8920816709dec1c85
5
+ SHA512:
6
+ metadata.gz: 1a410b288981d8ece57cc84e3ff2d5cc53a46b0d0cb5b8441eee2505a0c56ef59f90d3a8e7b83de338f068aafe357d7f0358c90947981eeed725d5b98fd709b1
7
+ data.tar.gz: 08a1f6cd7202825ed273d664cace41f6eda25f55e6654a3daafe6accf47bd48c2d175ba9c67e0ec4d22ae378a2b766ec02856e9c93bcf829636a041362e4ad61
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ chapter-3.rab
data/README.rd ADDED
@@ -0,0 +1,32 @@
1
+ = 名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
2
+
3
+ 2014年12月9日(火)21:00-22:00に実施する授業の資料です。今回は「3章 誤解されない名前」を読みながら、よい名前のつけ方について学びます。
4
+
5
+ == ライセンス
6
+
7
+ CC BY-SA 4.0
8
+
9
+ 原著作者名は以下の通りです。
10
+
11
+ * 須藤功平(またはKouhei Sutou)
12
+
13
+ == 作者向け
14
+
15
+ === 表示
16
+
17
+ rake
18
+
19
+ === 公開
20
+
21
+ rake publish
22
+
23
+ == 閲覧者向け
24
+
25
+ === インストール
26
+
27
+ gem install rabbit-slide-kou-schoo-readable-code-2014-12
28
+
29
+ === 表示
30
+
31
+ rabbit rabbit-slide-kou-schoo-readable-code-2014-12.gem
32
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # task.spec.files += Dir.glob("doc/**/*.*")
9
+ # task.spec.files -= Dir.glob("private/**/*.*")
10
+ task.spec.add_runtime_dependency("rabbit-theme-clear-code")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/chapter-3.rab ADDED
@@ -0,0 +1,316 @@
1
+ = リーダブルコードを\n読み解こう
2
+
3
+ : subtitle
4
+ 3章 誤解されない名前
5
+ : author
6
+ 須藤功平
7
+ : institution
8
+ 株式会社クリアコード
9
+ : content-source
10
+ schoo
11
+ : date
12
+ 2014/12/9
13
+ : allotted-time
14
+ 60m
15
+ : theme
16
+ clear-code
17
+
18
+ = 内容
19
+
20
+ * 自己紹介
21
+ * リーダブルコードとは
22
+ * 実例で考えよう
23
+ * 実際の改善にチャレンジ!
24
+ * まとめ
25
+ * 質疑応答
26
+
27
+ = 自己紹介(1)
28
+
29
+ * リーダブルコードの\n
30
+ 「解説」の著者\n
31
+ (('note:http://www.clear-code.com/blog/2012/6/11.html'))
32
+
33
+ = 自己紹介(2)
34
+
35
+ * クリアコードの代表取締役
36
+ * 「クリア」な(意図が明確な)\n
37
+ 「コード」を大事にする\n
38
+ ソフトウェア開発会社
39
+
40
+ = 自己紹介(3)
41
+
42
+ # image
43
+ # src = images/github-kou-with-annotation.svg
44
+ # relative_height = 100
45
+
46
+ == スライドプロパティー
47
+
48
+ : enable-title-on-image
49
+ false
50
+
51
+ = リーダブルコードとは(1)
52
+
53
+ # blockquote
54
+ # title = はじめに p. x
55
+
56
+ 本書の目的は、君のコードをよくすることだ
57
+
58
+ = リーダブルコードとは(2)
59
+
60
+ # blockquote
61
+ # title = はじめに p. x
62
+
63
+ その中心となるのは、コードは理解しやすくなければいけないという考えだ
64
+
65
+ = リーダブルコードとは(3)
66
+
67
+ # blockquote
68
+ # title = 1.2 読みやすさの基本定理 p. 3
69
+
70
+ 「コードを理解する」というのは、変更を加えたりバグを見つけたりできるという意味
71
+
72
+ = リーダブルコード
73
+
74
+ * 変更できるコード
75
+ * バグを見つけられるコード
76
+
77
+ (('tag:center'))(('tag:x-large'))
78
+ ↓\n
79
+ 読む人視点!
80
+
81
+ = 何をしているコード?
82
+
83
+ # coderay cpp
84
+
85
+ Node* node = list->head;
86
+ if (node == NULL) return;
87
+
88
+ while (node->next != NULL) {
89
+ Print(node->data);
90
+ node = node->next;
91
+ }
92
+ if (node != NULL) Print(node->data);
93
+
94
+ (('tag:center'))(('note:「優れた」コードって何? p. 2より'))
95
+
96
+ = 何をしているコード?
97
+
98
+ # coderay cpp
99
+
100
+ for (Node* node = list->head;
101
+ node != NULL;
102
+ node = node->next)
103
+ Print(node->data);
104
+
105
+ (('tag:center'))(('note:「優れた」コードって何? p. 2より'))
106
+
107
+ = どちらがリーダブル?
108
+
109
+ # coderay cpp
110
+
111
+ // どちらがリーダブルコード?どうして?
112
+ // リーダブルコード:変更できる・バグを見つけられるコード
113
+ // A.
114
+ Node* node = list->head;
115
+ if (node == NULL) return;
116
+ while (node->next != NULL) {
117
+ Print(node->data);
118
+ node = node->next;
119
+ }
120
+ if (node != NULL) Print(node->data);
121
+ // B.
122
+ for (Node* node = list->head; node != NULL; node = node->next)
123
+ Print(node->data);
124
+
125
+ (('tag:center'))(('note:「優れた」コードって何? p. 2より'))
126
+
127
+ = 実例で考えよう
128
+
129
+ (('tag:center'))(('tag:large'))
130
+ 3章「誤解されない名前」\n
131
+ より
132
+
133
+ ((' '))
134
+
135
+ = 3.1 例:filter()(1)
136
+
137
+ # coderay python
138
+
139
+ results =
140
+ Database.all_objects.filter("year <= 2011")
141
+
142
+ (({results}))はなに?
143
+
144
+ * 2011年以前のレコード?
145
+ * 2012年以降のレコード?
146
+
147
+ = 3.1 例:filter()(2)
148
+
149
+ * filterはあいまいな言葉
150
+ * 選択する→(({select()}))
151
+ * 除外する→(({exclude()}))
152
+
153
+ select("year <= 2011")
154
+ exclude("year <= 2011")
155
+
156
+ = 3.2 例:Clip()(1)
157
+
158
+ # coderay python
159
+
160
+ # textの最後を切り落として、
161
+ # 「...」をつける
162
+ def Clip(text, length):
163
+
164
+ * 最後から(({length}))文字を削除する?
165
+ * 最大(({length}))文字まで切り詰める?
166
+
167
+ = 3.2 例:Clip()(2)
168
+
169
+ 切り詰めるなら:(({Clip}))→(({Truncate}))
170
+
171
+ # coderay python
172
+
173
+ def Clip(text, length):
174
+ # ↓
175
+ def Truncate(text, length):
176
+
177
+ = 3.2 例:Clip()(3)
178
+
179
+ ((*最大*))(({length}))文字なら:(({max}))をつける
180
+
181
+ # coderay python
182
+
183
+ def Truncate(text, length):
184
+ # ↓
185
+ def Truncate(text, max_length):
186
+
187
+ = 3.2 例:Clip()(4)
188
+
189
+ 最大(({length}))((*文字*))なら:\n
190
+ (({length}))→(({chars}))
191
+
192
+ # coderay python
193
+
194
+ def Truncate(text, max_length):
195
+ # ↓
196
+ def Truncate(text, max_chars):
197
+
198
+ = 3.3 限界値(1)
199
+
200
+ ショッピングカートに入る商品が\n
201
+ 最大10点のケース
202
+
203
+ # coderay python
204
+
205
+ CART_TOO_BIG_LIMIT = 10
206
+
207
+ if cart.num_items() >= CART_TOO_BIG_LIMIT:
208
+ Error("カートにある商品数が多すぎます。")
209
+
210
+ = 3.3 限界値(2)
211
+
212
+ (('tag:center'))
213
+ バグあり!\n
214
+ 9点までしか入らない
215
+
216
+ # coderay python
217
+
218
+ CART_TOO_BIG_LIMIT = 10
219
+
220
+ if cart.num_items() >= CART_TOO_BIG_LIMIT:
221
+ Error("カートにある商品数が多すぎます。")
222
+
223
+ = 3.3 限界値(3)
224
+
225
+ * (({CART_TOO_BIG_LIMIT}))はあいまい
226
+ * 未満?以下?→境界値の情報がない
227
+ * (({MAX_ITEMS_IN_CARTS}))は明確
228
+ * この値が最大値(境界値を含む)
229
+ * 最大値のときは(({max}))を使おう!\n
230
+ (('note:(最小値のときは(({min})))'))
231
+
232
+ = 3.3 限界値(4)
233
+
234
+ # coderay python
235
+
236
+ # CART_TOO_BIG_LIMIT = 10
237
+ # if cart.num_items() >= CART_TOO_BIG_LIMIT:
238
+ # Error("カートにある商品数が多すぎます。")
239
+ MAX_ITEMS_IN_CARTS = 10
240
+ if cart.num_items() > MAX_ITEMS_IN_CARTS:
241
+ Error("カートにある商品数が多すぎます。")
242
+
243
+ = 他の例
244
+
245
+ * 範囲を指定するときは\n
246
+ (({first}))と(({last}))を使う
247
+ * 包括/排他的範囲には\n
248
+ (({begn}))と(({end}))を使う
249
+ * …
250
+ * (詳細は本を買ってください)
251
+
252
+ = 実際の改善にチャレンジ!
253
+
254
+ # coderay php
255
+
256
+ /* schooの学生名一覧を返す
257
+ 引数は返す学生名の最大値 */
258
+ function student($num) {
259
+ /* 処理の具体的な内容 */
260
+ }
261
+
262
+ * 誤解されない名前に改善して投稿
263
+ * よい投稿に「いいね!」して応援
264
+
265
+ = まとめ(1)
266
+
267
+ * リーダブルコードとは
268
+ * 変更できるコード
269
+ * バグを見つけられるコード
270
+ * ↑は((*読む人視点*))
271
+
272
+ = まとめ(2)
273
+
274
+ * 「誤解されない名前」を考えた
275
+ * (({filter}))はあいまい
276
+ * (({Clip}))もあいまい
277
+ * (({TOO_BIG_LIMIT}))もあいまい
278
+
279
+ = まとめ(3)
280
+
281
+ * 実際の改善にチャレンジした
282
+ * 「((*読む人*))が理解しやすいか?」を\n
283
+ とことん考えたはず
284
+
285
+ # blockquote
286
+ # title = 3章 誤解されない名前 p. 30
287
+
288
+ 名前が「他の意味と間違えられることはないだろうか?」と何度も自問自答する
289
+
290
+ = これから(1)
291
+
292
+ * これからも((*読む人*))のことを\n
293
+ 考えてコードを書こう
294
+ * ((*読む人*))のことを考えるには?
295
+ * 読む経験をたくさん積む
296
+ * たくさんコードを読もう
297
+
298
+ = これから(2)
299
+
300
+ * たくさんコードを読むコツ
301
+ * コードから学ぶ気持ちで読む
302
+ * ○いいこと探し
303
+ * ×悪いこと探し
304
+ * 本来、コードを読むことは\n
305
+ 楽しいことのはず!
306
+
307
+ = これから(3)
308
+
309
+ (('tag:center'))(('tag:large'))
310
+ 「解説」を読む\n
311
+ (('note:http://www.clear-code.com/blog/2012/6/11.html'))
312
+
313
+ * 本文:((*個人*))で\n
314
+ リーダブルコードを書く方法
315
+ * 解説:((*チーム*))で\n
316
+ リーダブルコードを書く方法
data/config.yaml ADDED
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: schoo-readable-code-2014-12
3
+ base_name: chapter-3
4
+ tags:
5
+ - rabbit
6
+ - readable-code
7
+ - schoo
8
+ presentation_date: 2014-12-9
9
+ version: 2014.12.9.0
10
+ licenses:
11
+ - CC BY-SA 4.0
12
+ slideshare_id:
13
+ speaker_deck_id:
14
+ ustream_id:
15
+ vimeo_id:
16
+ youtube_id:
17
+ author:
18
+ markup_language: :rd
19
+ name: Kouhei Sutou
20
+ email: kou@clear-code.com
21
+ rubygems_user: kou
22
+ slideshare_user:
23
+ speaker_deck_user:
@@ -0,0 +1,88 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:xlink="http://www.w3.org/1999/xlink"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ width="990"
14
+ height="673"
15
+ id="svg2"
16
+ version="1.1"
17
+ inkscape:version="0.48.5 r10040"
18
+ sodipodi:docname="github-kou-with-annotation.svg">
19
+ <defs
20
+ id="defs4" />
21
+ <sodipodi:namedview
22
+ id="base"
23
+ pagecolor="#ffffff"
24
+ bordercolor="#666666"
25
+ borderopacity="1.0"
26
+ inkscape:pageopacity="0.0"
27
+ inkscape:pageshadow="2"
28
+ inkscape:zoom="0.7"
29
+ inkscape:cx="494.78333"
30
+ inkscape:cy="353.66125"
31
+ inkscape:document-units="px"
32
+ inkscape:current-layer="layer1"
33
+ showgrid="false"
34
+ inkscape:window-width="956"
35
+ inkscape:window-height="757"
36
+ inkscape:window-x="2032"
37
+ inkscape:window-y="76"
38
+ inkscape:window-maximized="0"
39
+ fit-margin-top="0"
40
+ fit-margin-left="0"
41
+ fit-margin-right="0"
42
+ fit-margin-bottom="0" />
43
+ <metadata
44
+ id="metadata7">
45
+ <rdf:RDF>
46
+ <cc:Work
47
+ rdf:about="">
48
+ <dc:format>image/svg+xml</dc:format>
49
+ <dc:type
50
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
51
+ <dc:title></dc:title>
52
+ </cc:Work>
53
+ </rdf:RDF>
54
+ </metadata>
55
+ <g
56
+ inkscape:label="レイヤー 1"
57
+ inkscape:groupmode="layer"
58
+ id="layer1"
59
+ transform="translate(-293.57144,-235.86218)">
60
+ <image
61
+ y="235.86218"
62
+ x="293.57144"
63
+ id="image3269"
64
+ xlink:href="github-kou.png"
65
+ height="673"
66
+ width="990" />
67
+ <rect
68
+ style="fill:#ffffff;fill-opacity:0.49803922;stroke:#a40000;stroke-width:3;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
69
+ id="rect4065"
70
+ width="727.14282"
71
+ height="107.14287"
72
+ x="545"
73
+ y="551.71924"
74
+ rx="5"
75
+ ry="5" />
76
+ <text
77
+ xml:space="preserve"
78
+ style="font-size:60px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
79
+ x="576.42853"
80
+ y="624.57635"
81
+ id="text4059"
82
+ sodipodi:linespacing="125%"><tspan
83
+ sodipodi:role="line"
84
+ id="tspan4063"
85
+ x="576.42853"
86
+ y="624.57635">毎日コードを書いている</tspan></text>
87
+ </g>
88
+ </svg>
Binary file
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-kou-schoo-readable-code-2014-12
3
+ version: !ruby/object:Gem::Version
4
+ version: 2014.12.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Kouhei Sutou
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rabbit-theme-clear-code
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: 2014年12月9日(火)21:00-22:00に実施する授業の資料です。今回は「3章 誤解されない名前」を読みながら、よい名前のつけ方について学びます。
42
+ email:
43
+ - kou@clear-code.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".rabbit"
49
+ - README.rd
50
+ - Rakefile
51
+ - chapter-3.rab
52
+ - config.yaml
53
+ - images/github-kou-with-annotation.svg
54
+ - images/github-kou.png
55
+ - pdf/schoo-readable-code-2014-12-chapter-3.pdf
56
+ homepage: http://slide.rabbit-shocker.org/authors/kou/schoo-readable-code-2014-12/
57
+ licenses:
58
+ - CC BY-SA 4.0
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.2.2
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: "名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう"
80
+ test_files: []