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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []