Submit Search
Upload
コード品質を保つために心がけたいこと
•
0 likes
•
128 views
Kentarou Takeda
Follow
PHPer Tea Night★第一夜 飛び入りLT
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 19
Download now
Download to read offline
Recommended
gRPC入門
gRPC入門
Kenjiro Kubota
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Go入門
Go入門
Takuya Ueda
こわくない Git
こわくない Git
Kota Saito
Docker friendlyPHP / Laravel
Docker friendlyPHP / Laravel
Kentarou Takeda
例外設計における大罪
例外設計における大罪
Takuto Wada
Recommended
gRPC入門
gRPC入門
Kenjiro Kubota
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Go入門
Go入門
Takuya Ueda
こわくない Git
こわくない Git
Kota Saito
Docker friendlyPHP / Laravel
Docker friendlyPHP / Laravel
Kentarou Takeda
例外設計における大罪
例外設計における大罪
Takuto Wada
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Marp入門
Marp入門
Rui Watanabe
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
目grep入門 +解説
目grep入門 +解説
murachue
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
More Related Content
What's hot
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Marp入門
Marp入門
Rui Watanabe
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
目grep入門 +解説
目grep入門 +解説
murachue
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
What's hot
(20)
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
テストコードの DRY と DAMP
テストコードの DRY と DAMP
TLS, HTTP/2演習
TLS, HTTP/2演習
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Pythonによる黒魔術入門
Pythonによる黒魔術入門
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
Marp入門
Marp入門
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
目grep入門 +解説
目grep入門 +解説
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
コード品質を保つために心がけたいこと
1.
コード品質を保つためにやっている心がけたいこと
2.
TL;DR 日本語を書く力を養う 日本語を読む力を養う 要するに国語力を鍛える
3.
FizzBuzz問題「仕様書」
4.
要件 1から任意の値までを順に数えた数え入力し、次の通り標準出力へ出力する。 その数が3で割り切れる場合には、「Fizz」と出力する その数が5で割り切れる場合には、「Buzz」と出力する その数が3でも5でも割り切れる場合には、「FizzBuzz」と出力する 以上のどれにも当てはまらない場合、入力された数値をそのまま出力する。 https://atmarkit.itmedia.co.jp/ait/articles/1612/20/news026.html FizzBuzz問題:DevBasics/Keyword-@ITを参考に一部改変
5.
FizzBuzz問題「テスト結果報告書」 バグ内容 15 という入力に対し FizzBuzzFizzBuzz
と出力されました。 正しい動作 15 と入力した際は FizzBuzz のみ出力してください。
6.
プログラマーの回答 正しい動作です。
7.
何が起きた?
8.
function fizzBuzz($i) { $hit
= false; // その数が3で割り切れる場合には、「Fizz」と出力する if($i % 3 === 0) { $hit = true; echo 'Fizz'; } // その数が5で割り切れる場合には、「Buzz」と出力する if($i % 5 === 0) { $hit = true; echo 'Buzz'; } // その数が3でも5でも割り切れる場合には、「FizzBuzz」と出力する if($i % 3 === 0 && $i % 5 === 0) { $hit = true; echo 'FizzBuzz'; } // 以上のどれにも当てはまらない場合、入力された数値をそのまま出力する。 if(!$hit) { echo $i; } }
9.
修正指示 仕様書の誤りです。テスト結果報告書の通り修正してください。 正しい動作 15 と入力した際は FizzBuzz
と出力してください。
10.
修正されたコード // その数が3でも5でも割り切れる場合には、「FizzBuzz」と出力する if($i %
3 === 0 && $i % 5 === 0) { $hit = true; + // バグNo.42 `15` と入力した際は `FizzBuzz` のみ出力してください。 + if(%i !== 15) { echo 'FizzBuzz'; + } }
11.
FizzBuzz問題「テスト結果報告書」 バグ内容 30 という入力に対し FizzBuzzFizzBuzz
と出力されました。 正しい動作 30 と入力した際は FizzBuzz と出力してください。 他の類似の値に対しても同様の修正をしてください。
12.
偉い人の声 「二つ目の問題は何かって?それは、サービスの開始時刻が、今から8分後であるということ だ。よろしく頼む。」
13.
どうすれば良いのか? 仕様書を、解釈の余地が存在しないよう正確に書く。
14.
正確に書く 数値以外が入力された場合の動作 或いは絶対に入力されないのか? 小数が入力された場合の動作 或いは絶対に入力されないのか? 入力される値の上限と下限 範囲外の値が入力された場合の動作 シグナルを受け取った際の動作。 或いは関知しなくて良いのか? 出力の際にOSがエラーを返却した場合の動作 メモリが足りない場合の動作
15.
FizzBuzzEnterpriseEdition https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl; import org.springframework.context.ApplicationContext; import
org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters.DefaultFizzBuzzUpperLimitParameter; import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz; import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters.FizzBuzzUpperLimitParameter; /** * Main */ public final class Main { /** * @param args */ public static void main(final String[] args) { final ApplicationContext context = new ClassPathXmlApplicationContext(Constants.SPRING_XML); final FizzBuzz myFizzBuzz = (FizzBuzz) context.getBean(Constants.STANDARD_FIZZ_BUZZ); final FizzBuzzUpperLimitParameter fizzBuzzUpperLimit = new DefaultFizzBuzzUpperLimitParameter(); myFizzBuzz.fizzBuzz(fizzBuzzUpperLimit.obtainUpperLimitValue()); ((ConfigurableApplicationContext) context).close(); } }
16.
正確な仕様書を最低限の分量で書く。 その数が3で割り切れる場合には、その数の代わりに「Fizz」を出力する その数が5で割り切れる場合には、その数の代わりに「Buzz」を出力する その数が3でも5でも割り切れる場合には、その数の代わりに「FizzBuzz」を出力する https://atmarkit.itmedia.co.jp/ait/articles/1612/20/news026.html FizzBuzz問題:DevBasics/Keyword-@IT原文 日本語を書く力を養う
17.
背景を書く 入社試験の一次試験として実装の正確さを評価します。 配属先の参考としますが実装の良し悪しは評価の対象としません。 医療機器のシステムの一部として利用されます。 金融機関のシステムの一部として利用されます。 「主人公の心境に最も近いものを答えよ」と同じ解き方 日本語を読む力を養う
18.
シンプルに捉える 言語化できない仕様を実装することは普通の人はできない。 言葉を綺麗に保てば実装や設計も自然と綺麗になる。
19.
参考 ドキュメントに固執せよ https://gfngfn.github.io/ja/posts/2022-06-18-be-a-documentation-geek/ 【翻訳】Googleのエンジニアがソフトウェア開発する時に必ず書くドキュメント 「DesignDocsatGoogle」 https://tkybpp.hatenablog.com/entry/2020/08/03/090000
Download now