、GitHubのアドレス:https://github.com/asswecanfat/WC
二、PSP形式:
PSP2.1 | パーソナルソフトウェアプロセス段階 | 推定時間がかかる(分) | 実際の時間がかかる(分) |
---|---|---|---|
プランニング | 計画 | 25 | 30 |
・見積り | •このタスクが必要と推定どのくらいの時間 | 25 | 25 |
開発 | 開発 | 1400 | 1500 |
・分析 | ・分析ニーズ | 130 | 150 |
・デザインスペック | 設計ドキュメントの生成 | 60 | 50 |
・デザインレビュー | ・デザインレビュー | 30 | 45 |
・コーディング標準 | ・コードの仕様 | 40 | 40 |
・ 設計 | ・具体的な設計 | 80 | 90 |
・コーディング | ・具体的なコーディング | 930 | 965 |
・コードレビュー | ・コードレビュー | 20 | 20 |
・テスト | ・テスト(セルフテスト、コードを変更し、変更を提出) | 150 | 160 |
報告 | レポート | 130 | 130 |
・ 試験報告書 | ・テストレポート | 60 | 70 |
・サイズ測定 | ・コンピューティングのワークロード | 40 | 30 |
・死後&プロセス改善計画 | ・後知恵、およびプロセス改善計画を提案します | 30 | 30 |
トータル | 1555 | 1660 |
第三に、問題解決のためのアイデア
(1)慎重に完全なプロジェクトの要件を読んで、私はちょうど適切な処置をすることができ抽出するために、コマンドラインパラメータを見つける必要があります。
(2)まず、私のpythonのサードパーティ製のモジュールを使用します]をクリックし、開発者が唯一、適切なコマンドラインパラメータを追加することによって実現される機能に焦点を当てる必要があります適切なメソッドを書くように、それは、多くの方法がコマンドライン開発ツールパッケージです、しかし、欠点は、Pythonのxxx.py -l -w -c xxx.pyなコマンド(すなわち、三つの基本的なコマンドは、同時に2つの基本的なコマンドや使用を使用)(達成することができるを実行することができませんが、私は公式文書を見ていないので、種類の例が見つかりました。)
(3)私は基本的な機能はすべて、最初の方法で記述された辞書を返すw_func、私は似た文字列を返すことを検討しなかった、c_func、l_func内、BaseFuncの容易な拡張やメンテナンスというクラスにカプセル化されます「はXX XXファイルの文字がある」が、他の方法を書いたときに、後で良い計画を見つかりません。したがって、外観およびモジュール間の相互通話を考慮して、カプセル化プロセスにおいて、辞書に発信者の辞書を返すことを決めました。
(4)拡張SeniorFuncクラス-a中に封入、directory_processingに入れ-s呼の他の種類を容易に、ネストされた-a辞書は、リストを返す基本クラスと拡張クラスを使用して、リスト記憶方法を-s (すなわち-l、-w.-C、-a)、再帰的に処理文書の方法の継続的な使用を容易に
(4)によりは、エラー処理のモジュールの一部をクリックし、エラーハンドリングの小さな部分を私に直接のif-elseを使用して、多くの方法がありますので、入力ファイル処理エラーの後に自分自身をPYTHONエラーが発生しますが、Falseを返していません、だから私は良くなるに対処するのではなく、衰退のクラブハウスのメンテナンスの正確なエラー率をキャプチャする場合は、他の使用と思います。
(5)Pythonでは、ファイルオープンモードは、「R」と「RB」と、豪華であり、前者は一般のみバイトを読み取るオープン機能エンコード=「UTF-8」フィールドに追加されます。したがって、開いているファイルを容易にするために、私は元を使用しますが、いくつかのマイナーな問題がありますが、ファイルのUTF-8モードを読み取ることがない場合は、直接、エラーになりますので、私は、スキーマファイルをコーディング検出するために、chardetモジュールを使用し、再エンコード=ファイルのエンコード形式は、「適格なファイルは」再帰モードではないではありませんが思い出され、音声ファイルなどを再帰では削除されます。
(6)ワイルドカードを実装するために、私は、達成するために正規表現を使用していた*に置き換えられます。+、でしょうか?置き換えられています。この機能を実現し、包装工程のwildcard_dealですることができます。
(7)グラフィックスページは、私はそれがQTデザイナーが付属しているので、あなたはすぐに、グラフィックスページや美しいを開発することができますが、pyqt5を使用して開始し、私は、ファイルダイアログをドラッグすることができますモジュールを見つけることが、独自の手書き文字を必要としなかったため、このコードの一部なので、パイソンを使用するには、美しい、Tkinterのが来るしかし、各クラスの機能を実現することができる呼び出すことはできません。
第四に、設計と実装プロセス
WCファイルが存在BaseFunc基本的な機能クラス、ExpandFunc拡張クラス、SeniorFuncグラフィックスページクラス、メインはrunメソッド、wildcard_dealワイルドカード処理方法では、deal_directory再帰処理
第五に、テストの実行
テストファイルが含まれます:空のファイルを、ファイルが一つだけの文字、1ワード文書、標準のPythonのソースファイル、複数のディレクトリネストされたファイルを持っています
5.1テスト非再帰関数(-l、-a、-w、-c)
5.1.1テストの空のファイル
5.1.2ファイルのテストのみ1文字
5.1.3 1ワードファイルをテスト
5.1.4テストの標準的なPythonのソースファイル
存在しない5.1.5テストファイル
5.2テストの非再帰関数(-s -a / -w / -l / -c)
5.2.1テストネストされたマルチディレクトリのファイル
5.2.2テストワイルドカードを持つネストされたマルチディレクトリファイル?
5.3グラフィカル機能試験(-x)
すべての処理結果の検証後に予想される結果と一致しています
コード・カバレッジ:
なぜならカバレッジが低減されるよう.coverageれ、.coverage前希釈グラフィカルインタフェーステスト生成
VIプロジェクトの概要
このプロジェクトは、様々なモジュール間の関係を計画する方法、構造にどのように考えるように私を作ったので、私は背後にあるソフトウェア工学のより深い理解に行ってきました。一般的に、これは非常に良い、私を聞かせて、全体的には良いプロジェクトの練習の手で、あまりにも高いが低くないではありませんコードの冗長性の私の期待を満たしていませんでしたしません。コーディング標準モードPEP8パイソンをより深く理解するだけでなく、私はより多くを学ぶことができるプロジェクトの裏に願っています。