Upgrade to Pro — share decks privately, control downloads, hide ads and more …

古のJavaを使うということ / JJUC CCC 2016 Spring

古のJavaを使うということ / JJUC CCC 2016 Spring

#jjug_ccc #ccc_m71

zer0-u

May 21, 2016
Tweet

More Decks by zer0-u

Other Decks in Programming

Transcript

  1. #ccc_m71 目次 * 自分について - これは誰ですか? * 出会い - これはJavaですか?

    * コメント - これは消せますか? * テスト - これは直せますか? * 周りに広める - これは使えますか? * 古のJava - これは変えられますか?
  2. #ccc_m71 出会い - これはJavaですか? * Javaで「Hello,World!」できる程度で入社   「Java完全にマスターした」 * 研修で「動くものをつくる」魅力にはまる  →

    自分でもコードを書くように * よりよいものを作るために勉強&写経  * JUnit実践入門  * リーダブルコード などなど
  3. #ccc_m71 出会い - これはJavaですか? * 配属! * 知ってるコードを書くとコンパイルエラーが出る  → (o・д・)???

    * どうやらJavaにはバージョンというものがあるらしい * じゃあ、この現場で使ってるJavaは?
  4. #ccc_m71 コメント - これは消せますか? * 業務 - 保守(不具合修正)が9割  * 自分がゼロからコードを書くことはまずない

     * 誰かの書いたコードを読んで修正・追加がメイン * 状況  * バージョン管理あり  * コードレビューあり
  5. #ccc_m71 コメント - これは消せますか? * 用語「修正範囲」  * 限りなく狭いほうがよいとされているもの  * 同じ問題を解決できる複数の手法がある場合、

      修正されるコードの行数が少ないほうが良い  * 特に既存の部分を(コメントも含め)削除することは   できる限り避けるべきである 
  6. #ccc_m71 コメント - これは消せますか? * ここで取った作戦  * 「できる限り不具合を酷く見せる」   * 史上最悪の不具合に見せかけるためにひたすら

       発生条件を増やし続けて1週間  * 修正しても致し方ないと思える範囲を広げれば    コメントアウトの削除も許されるはず…!  * 一部コメントアウトの削除はあきらめる → コメントアウト部分の削減に成功!
  7. #ccc_m71 コメント - これは消せますか? (まとめ) * 最善のコードを書くためには被害状況を盛ることも大事 * コメントアウト一つといえど舐めてかかってはならない *

    現状のコードにはそれなりの理由があって成り立っている  ことがわかった * とはいえJavaDoc形式でコメントアウトするのはやめろ * Javaっぽい話はこの次から →
  8. #ccc_m71 テスト - これは直せますか? * 業務  * 誰かの書いたコードを読んで修正・追加がメイン * 状況

     * バージョン管理あり  * コードレビューあり  * テストコードなし  * 仕様ほぼなし (都度ベストな対応を考える)
  9. #ccc_m71 テスト - これは直せますか? * JUnit (基礎知識)  * 現在の主流はJUnit4  *

    アノテーションを使って簡易に記述できることが特長 * アノテーションが利用できるのはJ2SE1.5から
  10. #ccc_m71 テスト - これは直せますか? * やったこと(概要)  * JDK8が有効になっているeclipseを別で用意  * DBUnit+MySQLでDB接続を再現

     * テスト対象コードは本番に載せるものをほぼコピー   (o・д・)「後方互換バンザイ」
  11. #ccc_m71 テスト - これは直せますか? * 結果  * 当該不具合についてはテストコードで修正の妥当性を   確認できるようになった  *

    周囲にJUnitの存在と有用性を少しアピールできた  * 継続して実行する基盤を作る前に異動...
  12. #ccc_m71 テスト - これは直せますか?(まとめ) * 「テストが大事」という金科玉条にこだわると進めない * できる範囲のことで全力を尽くす  * JDK8が有効な開発環境を用意する

     * 自分が触るコードだけでもテストを書く * 疑う人には実演が効果的  * 画面ぽちぽちにかかる時間を計っておくとなおよし
  13. #ccc_m71 周りに広める - これは使えますか? * ここまででわかったこと  * 製品をよりよくするためにはコードの改善も必要   * 不要なコメントアウトの削除

      * テストコードの追加 など  * 一部ではなく全体的な改善が製品の品質向上に   役立つはず  * とはいえいちいち前提を説明して回るのは面倒
  14. #ccc_m71 周りに広める - これは使えますか? (o・д・) (そういう) (o・д・) (話じゃ) (o・д・) (ないんだ)

    (o・д・) (YO!!!!!!!) (o・д・) (とはいっても通じないんだろうなぁ) (o・д・)「はい、わかりました」
  15. #ccc_m71 周りに広める - これは使えますか? * また別の日 (o・д・)「こうすると開発が早くなるんだよー」 ('ω') 「でもこれ書けるようになるまで時間かかるでしょ」 (o・д・)「そんなにかからんよ、普段書いてるコードと

        ほとんど同じだし」 ('ω') 「であれば目視確認のが早いんじゃない?慣れてるし...    それにテストコードが間違ってたらどうするの?」 (o・д・) (Oh...)
  16. #ccc_m71 古のJava - これは変えられますか? * 開発者個人として古のJavaに出会ったときに打てる手(1)  * 現行のJDKベースの開発環境を確保  * 製品に必須ではない部分(テストコード等)は

      現行のJDKベースで書く   * 必須でないところは最低限の手間で書く  * IDEの設定でコメント部はできる限り薄い色にする   * 見えなければどうということはない   * だからJavaDoc形式でコメントアウトはやめろと
  17. #ccc_m71 古のJava - これは変えられますか?(まとめ) * 正しい製品を正しく作るために  * 今まで作り上げたものを直視する   * コメントアウトにも相応の事情がある

     * コードを使って品質を向上させる手段があることを示す   * まずは自分のところからテストを書く   * 仕様はテストコードで示す勢い  * 最善を学び続ける