Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Code Complete 第2版 第1部 第4章 / Code Complete Secon...
Search
taroosg
December 04, 2018
Programming
69
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Code Complete 第2版 第1部 第4章 / Code Complete Second Edition Part 1 Chapter 4
taroosg
December 04, 2018
More Decks by taroosg
See All by taroosg
自走のためのメンタル / mental-for-self-running
taroosg
0
47
Code Complete 第2版 第2部 第5章 / Code Complete Second Edition Part 02 Chapter 05
taroosg
0
87
let's-deploy
taroosg
0
54
PCに関するジェネレーションギャップの話 / Generation Gap on PC
taroosg
0
50
ブラウザゲームをハッキング / Hacking browser games
taroosg
0
740
Code Complete 第2版 第1部 第3章 / Code Complete Second Edition Part 1 Chapter 3
taroosg
0
120
Code Complete 第2版 第1部 第1章&第2章 / Code Complete Second Edition Part 1 Chapter 1 and Chapter 2
taroosg
1
46
はじめてのプログラミング教育 / First programming education
taroosg
0
59
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
Event is what happens
moro
2
780
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.5k
カツオ、ご期待ください
suneo3476
0
190
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
460
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
Domain-Driven Transformation
hschwentner
2
2.3k
golang-bob.pdf
iwatsukayura
0
130
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
19k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Producing Creativity
orderedlist
PRO
348
41k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
Prompt Engineering for Job Search
mfonobong
0
520
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Transcript
code complete 第2版 4章 20181204読んだ内容まとめてLT会#02 Taro Ohsugi
この発表には発表者個人の経験・見解が多分に含まれています. 用量・用法を守って正しくお使いください.
自己紹介 ▪大杉太郎 ・G's ACADEMY FUKUOKA講師 ・年齢:31 出身:茨城県→北海道→東京→福岡 ▪好きな技術とか ・javascript,firebase,ajax ・PHP,laravel
・データベースの設計とか ▪好きなもの ・旅行,写真,Ardbeg taro_ohsugi taro.osg
code complete 第2版 ▪読み始めたきっかけ:コードを書くときの考え方を研究したかった. ▪上下巻で計1173ページ. (上巻628ページ & 下巻545ページ) ▪漸く!第1部!完! (`・ω・)b
(なお上巻は第4部まである模様)
第4章 コンストラクトの重要な決断
前回(第3章)の話
実装前の準備がとっっっっっても重要 ▪計画段階で欠陥を発見する場合と実装段階で欠陥を発見する場合 ▪準備不足の原因は知識や理解のない上司→論理,メタファ,データ ▪解決すべき課題は必ず明文化しよう!! ▪アーキテクチャ設計を十分考慮し,採用不採用の理由を明確に!
- WARNING - この発表には宗教戦争的要素が含まれる可能性があります. 用量・用法を守って正しくお使いください.
今回(第4章)の内容 ▪プログラム言語の選択 ▪プログラミング規約 ▪コンストラクションプラクティス ▪まとめ
プログラミング言語の選択
プログラミング言語の選択 「プログラミング言語は,生産性やコードの品質に大きく影響する」 「高級言語を使うプログラマの生産性と品質は低水準言語より高い」 「高級言語や生産性,信頼性,単純さ,理解しやすさに優れる」
は??
プログラミング言語は生産性や品質に影響する ▪言語による差 ・新しい言語はできることが多い or 簡単 ▪数字表記の例 ・アラビア表記が出現する以前は「割り算が神の領域」 ・「0」が存在しなかったため10進の表記ができなかったため ・(アラビア表記は7世紀くらいに確立) 割り算マスターたち
言語の選択による生産性と品質の影響 ▪慣れ ・使い慣れた言語の生産性はそうでない言語より高い. ・3年以上使っている言語での生産性は初めての言語より30%高い! (Boehm et al. 2000)
高級言語を使うことで生産性と品質が高まる ▪高級言語 ・C++, Java, Smalltalk, Visual Basic ・低水準言語と比較して生産性や信頼性が5-15倍向上する! (Brooks 1987;
Jones 1998; Boehm 2000) ・1行のコードでより多くの命令を伝えられる. ▪そうでない言語 ・C, アセンブラ
高級言語を使うことで生産性と品質が高まる
うーん?? ▪自然言語に例える! ・「言語の表現力と物事を考える能力に関連がある」説 (Sapir, Whorf 1956) ・言葉を知らなければ,表現したりや系統立てて説明したりできない! ▪言語を理解していないと... ・「C++だと思ったら,C++っぽく書かれたFORTRANだったでござる」 (Hanson
1984; Yourdon 1986)
言語の紹介 (知らなかった内容とか) ▪アセンブラ ・マシン特有の機械語なのでプロセッサ依存.(intelとかmotorolaとか) ・実行速度の改善とコードサイズの縮小以外にはほぼ使用しない. ▪COBOL (COmon Business-Oriented Language) ・当初はアメリカ国防総省で使用するために開発された.
▪FORTRAN (FORmula TRANslation) ・変数やループの初出.
言語の紹介 (知ってた内容とか) ▪Javascript Javaとはそれほど関係がない 以下Javaとの関連 ・すごい人がlivescriptという言語を開発 ・いまJavaが熱いらしい ・せや,javascriptって名前に変えたろ!
プログラミング規約
プログラミング規約 ▪高品質なソフトウェア ・アーキテクチャの概念と実装の間に関連性を見出せる. ・変数名,クラス名,フォーマット規約,コメント規約を一貫させる. ▪ガイドラインの威力 ・アーキテクチャのガイドラインはプログラムの構造バランスを整える. ・コンストラクションのガイドラインは各パーツの関連を整える. ・規約が統一されていないと各自勝手に実装し始めてメシマズ展開.
で,どうする?? ▪順番 ①プログラミング規約の規定 ・規約に従ったプログラムを後から改造できないくらいに! ②ソフトウェアのコンストラクション ・規約に沿って計画を立てる.
テクノロジの波
テクノロジの波 ▪自分がどこにいるのか ・成熟した環境:強力なツール,日本語ドキュメント,ググれる ・始まりの環境:バグ祭り,糞ドキュメント,バージョンのリリースで死 ▪始まりが悪いわけではない ・作業の内容が変わるだけ ・機能の解明,エラーのデバッグ,新バージョンのための修正
プログラミングの考え方 ▪プログラミング言語の「中で」表現する ・言語の構造から表現する内容を決める. ・「こんな機能がある」→「こういうことできそう」 ▪プログラミング言語の「中へ」表現する ・表現したい考えを決めてから言語での表現方法を決める ・「こういうことしたい」→「こう書けばおk」 両者の差異を理解することが重要
コンストラクションプラクティスの例
コーディング ・事前に行う設計とキーボードの前で行う設計は明確か. ・変数名,コメント,レイアウトの規約は明確か. ・エラー処理,セキュリティ対策,パフォーマンスの重要度は明確か. ・テクノロジーの波を意識しているか.アプローチは適切か.
チームワーク ・統合手続きは明確か.踏まなければならない手続きを定義する. ・ペアプログラミングの組み込み ・1人でのプログラミング ・両者の組み合わせ
品質保証 ・コードを書く前にテストケースを定義しているか ・単体テストの実施 ・チェックイン前に各コードをチェックするか ・統合テストの実施 ・互いにコードレビューを実施できるか
ツール ・バージョン管理 ・言語とそのバージョン ・フレームワークの採用是非の決定 ・標準機能以外の使用に関する規定 ・エディタ,デバッガ,テストなど必要なツールの洗い出しと入手 ・(十分なスペックのPC)
まとめ
まとめ ▪高級言語を使おう! ▪コードを書く前に規約を決めよう! (逆は死) ▪考えを決めて,言語でどう表現するかを考えよう! ▪波のどこにいますか??
ご静聴ありがとうございました!