ソフトウェア工学Ⅱ - 小テスト

DownloadImage

MVCをコードリーディングして得たもの

 今回のDownloadImageの小レポート(Task)に関して、MVCパッケージのコードリーディング、DownloadImageのコーディングを通して、様々な教訓が得られました。コーディングに当たって、青木さんの作られたMVCを読んでから、どのようにコーディングするのがベストなのかを考えました。コードリーディングをしてみて、青木さんの手法と従来の私の手法を比べた表を表1に記載します。

表1. 従来の私の手法と青木さんの手法を比較した結果
従来の私の手法 青木さんの手法
1.ブレース括弧
                                for(…) {
                                }
                            
                                for(…) 
                                {
                                }
                            
2.参照型変数
                                Exception exception
                            
                                Exception anException
                            
3.レシーバ
                                initialize();
                            
                                this.initialize();
                            
4.ブランク
                                for(int index=0; index<10; index++)
                            
                                for(int index = 0; index < 10; index++)
                            
5.継承
                                    public class Model
                                
                                    public class Model extends Object 
                                
6.コメント
                                /*
                                 * ちょめする。
                                 */
                                hogeHogeHoge() {
                                    hoge(); //コメント
                                    hogeHoge(); //コメント
                                }
                            
                                /*
                                 * ちょめし、
                                 * そのちょめをちょめする。
                                 * 良好(2012年11月27日)
                                 */
                                hogeHogeHoge() {
                                    hoge();
                                    hogeHoge();
                                }
                            
7.Adapter
                                使うmethodだけオーバライド
                            
                                すべてオーバーライド
                            
8.リターン
                                void hoge() {
                                    hogeHoge();
                                }
                            
                                void hoge() {
                                    hogeHoge();
                                    return;
                                }
                            
9.変数名
                                arg
                            
                                arguments
                            

 コードリーディングをして自分と比べた結果、表1を見てもらえばわかるように、従来の私の方法は間違っていたとわかります。「1.ブレース括弧」については、個人の好みだと昔聞いたので、今後他の玄人プログラマーの書き方を見ながら判断していこうと思いますが、「2.参照型変数」については、講義でもおっしゃられていたように1つのモノだと考えて、命名してやるのがベストだと知りました。また、「3.レシーバ、5.継承、7.Adapter、8.リターン、9.変数名」については、コードを読む人(自分自身も含めた人)に対して、誰が何をしているのかが、明示的にわからないコードを今まで私は書いていました。ですので今後、暗黙の命令を明示的にわかるように、コーディングしていきたいと思います。次に「6.コメント」については、今までメソッド内に無駄なコメントが多く、上の例のように、メソッドに関するコメントは記述していても、メソッドに関するコメントを具体的には書いていませんでした。また、メソッドを説明するコメントの最後に、テスト結果を書くということはしていませんでした。最後に、「4.ブランク」については前から気になっていたことですが、読みやすくするためにもブランクは多様した方が良いとわかりました。今後コードを書く際は、MVCのコードを参考にしてどういうコードが良いのか判断していきたいと思います。

DownloadImageをコーディングして得たもの

try-catch文に関して、これまで意識していなかったため、catch文にどういう命令を実行すれば良いのかわかりませんでしたし、これまでURLを取得する際、try-catchしていませんでした。今後、自分のしたい処理が例外をはくものかどうか確認してから、使いたいと思います。

DownloadImageテスト

 プログラムは正常に動きます。ただ、58行目:boo(aString); 80行目:open(aView, new Dimension(anBufferedImageFromLocal.getWidth(), anBufferedImageFromLocal.getHeight()) );に関しては、thisをつけたかったのですが、booメソッドとopenメソッドはstaticであるので、thisを使うことは出来ませんでした。 ちなみに念のため、ウィンドウが出てから、3秒たっているかをタイマーを使って確認し、3.001秒になっていることは確認しました。そして、URLの例外の場合は「hhttp://」、画像読み込みの場合は「SmalltalkIdiomsFrontPage.jpgss」などのようにして、例外が起こったことを一応確認しました。ただし、Threadの例外処理の確認はしていません。

スモールトークのイメージ画像

HTMLドキュメントに関して

結構手間がかかってしまったので、出来ればPHPを使って、データの書き込みが楽に出来るように設計できるようにしたいと思います(Webが専門分野ではありませんが、今後のためにも)。下に全文字数をカウントしています。だいたいの量でわかるとは思いますが、これによって一応不正をしていないと証明できます。また、テーブル内は数えていません。