================================================== どうプログラミングするのか ================================================== 概要 ================================================== * これまで私が教わってきた **TDD** の考え方について紹介します。 コードの書き方 ============================================= * プログラムはまず日本語で書けるようにする * 日本語化する事により、調べやすくなる。 * 何をテストすべきなのかも見えてくる コードの書き方 ============================================= * プログラムには入力と出力がある * テストは入力と出力を決定して実行する TDD(BDD)で必ず書け! ============================================= * メインのコードを書く前にテストを書く。 **目的はコードの設計** * 関数名の決定( **名前重要** ) * 引数の決定(関数やclassの使い方) * そのコードの **振る舞い** についての決定 TDD(BDD)で必ず書け! ============================================= * テストを先に書くことにより、テストしやすいコードとなる。 * main関数の代わりに unittest.main() で実行する * 手動でテストしていた事をunittestで **自動実行** が可能となる ⇒ CI テストのデメリット ============================================= * テストは負債になる事もある * ソースコードが巨大になると、ソースの根幹に関わる部分を変更した時にテストコード自体も大量に書き直さなければならない時がある 不要なテスト ============================================= * argparseのような **既存モジュールの動作についてのテストは不要** * 自分で書いたわけではないモジュールの機能はモジュール自体が動作を保障してくれるはず テスト用のdummy ============================================= * プロセス間通信するプログラム(たとえばネットワークプログラミング等)をテストをする為には **mock** が必要 バージョン管理 ============================================= * ソースコードの管理には **バージョン管理ツール** が必須。 * これは開発だけではなくサーバのconfig管理やドキュメント管理にも言える事 バージョン管理 ============================================= * ソースコード等のプレーンテキストの管理にはPython製で初心者にも使いやすい **Mercurial** を使おう おしまい ============================================= 以上