rabbit-slide-Piro-readable-code-workshop-2022-11-02a-implementation 2022.11.02
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 +7 -0
- data/.rabbit +1 -0
- data/README.rd +32 -0
- data/Rakefile +17 -0
- data/config.yaml +22 -0
- data/implementation.rab +140 -0
- data/pdf/readable-code-workshop-2022-11-02a-implementation-how-to-proceed.pdf +0 -0
- metadata +78 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 492b5615d1af6b0fa07b0aba5769332c63a5a7a84d047d54ee0fc97375599764
|
4
|
+
data.tar.gz: 79ff2f059fb41e35e6dc10755dbd8591470d96a5f0daefe30eb5474218ae4dd1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 95fa2b2ec2b5b40501f2b17101e88c45235166eaff2a1774fb5f25ff413a0336b086d1fa3d036796737424b1585e5eb77b13168b8572df0b6a7f69fc80c3a022
|
7
|
+
data.tar.gz: 4788f8e124a180efc583c0715a348531e6519dd00d4b8b46c6067911653e74b5d668fb13deb41fee059aec7dcbc85cc91099f4f1d9b4283b94e61aa6e615a2d7
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
implementation.rab
|
data/README.rd
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
= リーダブルコード演習 - 課題の実装の進め方
|
2
|
+
|
3
|
+
2022-08-04開催のリーダブルコード演習で実装する課題の概要と進め方の説明。
|
4
|
+
|
5
|
+
== ライセンス
|
6
|
+
|
7
|
+
CC-BY-SA-4.0
|
8
|
+
|
9
|
+
原著作者名は以下の通りです。
|
10
|
+
|
11
|
+
* 株式会社クリアコード
|
12
|
+
|
13
|
+
== 作者向け
|
14
|
+
|
15
|
+
=== 表示
|
16
|
+
|
17
|
+
rake
|
18
|
+
|
19
|
+
=== 公開
|
20
|
+
|
21
|
+
rake publish
|
22
|
+
|
23
|
+
== 閲覧者向け
|
24
|
+
|
25
|
+
=== インストール
|
26
|
+
|
27
|
+
gem install rabbit-slide-kou-readable-code-workshop-2022-08-04-implementation
|
28
|
+
|
29
|
+
=== 表示
|
30
|
+
|
31
|
+
rabbit rabbit-slide-kou-readable-code-workshop-2022-08-04-implementation.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
|
+
# spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
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/config.yaml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
---
|
2
|
+
id: readable-code-workshop-2022-11-02a-implementation
|
3
|
+
base_name: how-to-proceed
|
4
|
+
tags:
|
5
|
+
- rabbit
|
6
|
+
- readable-code
|
7
|
+
presentation_date: 2022-11-02
|
8
|
+
version: 2022.11.02
|
9
|
+
licenses:
|
10
|
+
- CC-BY-SA-4.0
|
11
|
+
slideshare_id: readable-code-workshop-2022-11-02a-implementation
|
12
|
+
speaker_deck_id:
|
13
|
+
ustream_id:
|
14
|
+
vimeo_id:
|
15
|
+
youtube_id:
|
16
|
+
author:
|
17
|
+
markup_language: :rd
|
18
|
+
name: YUKI Hiroshi
|
19
|
+
email: yuki@clear-code.com
|
20
|
+
rubygems_user: Piro
|
21
|
+
slideshare_user: pirooutsiderreflex
|
22
|
+
speaker_deck_user: piroor
|
data/implementation.rab
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
= 課題の実装の進め方
|
2
|
+
|
3
|
+
: author
|
4
|
+
結城洋志
|
5
|
+
: institution
|
6
|
+
株式会社クリアコード
|
7
|
+
: content-source
|
8
|
+
実践リーダブルコード
|
9
|
+
: date
|
10
|
+
2022-11-02
|
11
|
+
: allotted-time
|
12
|
+
10m
|
13
|
+
: theme
|
14
|
+
clear-code
|
15
|
+
|
16
|
+
= 実装の目的
|
17
|
+
|
18
|
+
* 課題の仕様を理解する
|
19
|
+
* 「読まれることを意識して\n
|
20
|
+
書かれたコード」を用意する
|
21
|
+
* ((*リーダブルなコード*))を書こう!
|
22
|
+
|
23
|
+
(('note:(後半戦への布石)'))
|
24
|
+
|
25
|
+
= 目的じゃないこと
|
26
|
+
|
27
|
+
* テクニックをたくさん覚える
|
28
|
+
* 難しいプログラムを実装する
|
29
|
+
* プログラムを速く実装する
|
30
|
+
* 高性能なプログラムを実装する
|
31
|
+
* 奇抜な方法で目立つ
|
32
|
+
|
33
|
+
= 課題の傾向
|
34
|
+
|
35
|
+
* 技術的に難しいことは\n
|
36
|
+
意図的に避けている
|
37
|
+
* 段階的に改良していく
|
38
|
+
* 時間内で実装しきれない分量
|
39
|
+
* ((*すべて実装する必要はない!*))
|
40
|
+
|
41
|
+
= メモを書く
|
42
|
+
|
43
|
+
* 工夫したことはissueに書く
|
44
|
+
* 1つのissueに1つの工夫でOK
|
45
|
+
* メモに含めること
|
46
|
+
* 実際のコードのURLか\n
|
47
|
+
コード片(差分)
|
48
|
+
* リーダブルな理由
|
49
|
+
|
50
|
+
= メモ例
|
51
|
+
|
52
|
+
# _
|
53
|
+
タイトル: 統一されたスタイル ← リーダブルな書き方の名前
|
54
|
+
|
55
|
+
↓本文↓
|
56
|
+
--
|
57
|
+
URL: https://github.com/kou/.../commit/eb02be
|
58
|
+
|
59
|
+
コード:
|
60
|
+
```
|
61
|
+
@@ -64,7 +64,7 @@ void add_term_to_TermList(...) {
|
62
|
+
void open_TermList(TermList *list, char *path) {
|
63
|
+
FILE *fp;
|
64
|
+
/* ファイルを開く */
|
65
|
+
- if ((fp = fopen(path , "r")) == NULL){
|
66
|
+
+ if ((fp = fopen(path , "r")) == NULL) {
|
67
|
+
fprintf (stderr, "ファイルが開けません\n");
|
68
|
+
fclose(fp);
|
69
|
+
exit(EXIT_FAILURE);
|
70
|
+
```
|
71
|
+
|
72
|
+
理由:
|
73
|
+
ファイル内でスタイルを統一しているので読みやすくなっている。
|
74
|
+
|
75
|
+
= リーダブルコードとは
|
76
|
+
|
77
|
+
* 読む人基準
|
78
|
+
* 「読む人」が読みやすいなら\n
|
79
|
+
リーダブル
|
80
|
+
* 読む人の視点を意識してみて
|
81
|
+
* どんな人が読む?
|
82
|
+
* どんな前提知識がある?
|
83
|
+
|
84
|
+
= リーダブルにするヒント
|
85
|
+
|
86
|
+
* 要件が増えて、それまでと\n
|
87
|
+
((*前提が変わった*))とき
|
88
|
+
* 新しい要件に\n
|
89
|
+
惰性ややっつけで対応すると\n
|
90
|
+
リーダブルでなくなりやすい
|
91
|
+
|
92
|
+
= リーダブルにするヒント
|
93
|
+
|
94
|
+
* × とりあえず\n
|
95
|
+
こう書き足したら動く
|
96
|
+
* ○ 新しい要件に基づいて\n
|
97
|
+
コードを見直し、\n
|
98
|
+
適切な書き方に改める
|
99
|
+
* 「どうだったらリーダブルか」\n
|
100
|
+
をその都度考え直してみよう
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
= 実装に困ったら1
|
105
|
+
|
106
|
+
* 講師に相談
|
107
|
+
* 講師は((*答えを教えない*))
|
108
|
+
* 一緒に考えてくれる
|
109
|
+
* 答えを教えない理由
|
110
|
+
* 参加者が考える機会を奪わないため
|
111
|
+
* 一緒に考えると新しい視点が増える
|
112
|
+
|
113
|
+
= 実装に困ったら2
|
114
|
+
|
115
|
+
* 他の人に相談
|
116
|
+
* 答えを教えてもよい
|
117
|
+
* 一緒に考えてもよい
|
118
|
+
* 条件
|
119
|
+
* 答えを教えるときは理由も伝える\n
|
120
|
+
(('note:(教える参加者が考える機会になる!)'))
|
121
|
+
* 聞く人は理由も聞く\n
|
122
|
+
(('note:(考え方を知ると新しい視点でコードを読める!)'))
|
123
|
+
|
124
|
+
= 実装開始
|
125
|
+
|
126
|
+
* 仕様
|
127
|
+
* task.md
|
128
|
+
* 練習
|
129
|
+
* 講師がtask.mdを読んで説明
|
130
|
+
* 仕様1を各自で実装
|
131
|
+
* 実装できたらチューターに声掛け\n
|
132
|
+
→仕様2以降実装
|
133
|
+
|
134
|
+
= ここまでの説明
|
135
|
+
|
136
|
+
腑に落ちましたか?
|
137
|
+
|
138
|
+
= 開始
|
139
|
+
|
140
|
+
12:15まで
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-Piro-readable-code-workshop-2022-11-02a-implementation
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2022.11.02
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- YUKI Hiroshi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-11-01 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: 2022-08-04開催のリーダブルコード演習で実装する課題の概要と進め方の説明。
|
42
|
+
email:
|
43
|
+
- yuki@clear-code.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- ".rabbit"
|
49
|
+
- README.rd
|
50
|
+
- Rakefile
|
51
|
+
- config.yaml
|
52
|
+
- implementation.rab
|
53
|
+
- pdf/readable-code-workshop-2022-11-02a-implementation-how-to-proceed.pdf
|
54
|
+
homepage: http://slide.rabbit-shocker.org/authors/Piro/readable-code-workshop-2022-11-02a-implementation/
|
55
|
+
licenses:
|
56
|
+
- CC-BY-SA-4.0
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 2.7.6
|
75
|
+
signing_key:
|
76
|
+
specification_version: 4
|
77
|
+
summary: リーダブルコード演習 - 課題の実装の進め方
|
78
|
+
test_files: []
|