Index: [Article Count Order] [Thread]

Date:  Wed, 03 Dec 2003 12:33:19 +0900
Subject:  【オブジェクト倶楽部:2003-25号】

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.25 2003/12/03

■ I N D E X
┃
┣【Topics】オブジェクト倶楽部クリスマス会満員御礼
┣【プログラミング】リファクタリング [1] −プログラミングの体質改善
┗【プログラミング】C#で学ぼうオブジェクト指向入門 [1]

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇  オブジェクト倶楽部クリスマス会満員御礼
  〇 〇━━━━━━━━━━━━━ ━━・ 

オブジェクト倶楽部クリスマス会の告知を公開してからほぼ1ケ月となりまし
た。おかげさまで定員に達し、参加募集を締め切らせていただきました。
ありがとうございました。

http://objectclub.esm.co.jp/event/2003christmas/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【プログラミング】リファクタリング [1] −プログラミングの体質改善

はじめまして。梅田です。リファクタリングについて連載させていただくこと
になりました。以後、よろしくお願いいたします。
この連載では、リファクタリングについての概要を説明し、その後、リファク
タリングを必要とするコードの特徴(不吉な匂いとして表現されています)と
対処をとりあげます。参考書籍は、『リファクタリング プログラミングの体
質改善テクニック(Refactoring : Improving The Design of Existing Code)』
です。同様の記事もオブジェクト倶楽部で読むことができます。興味を持った
方は、連載がつまらなくならない程度にお読みください(笑)
http://www.objectclub.jp/UnderstandingRefactoringByChart/

さっそくですが、リファクタリングとは何かを簡単に説明しましょう。リファ
クタリングとは、『ソースコードを読みやすくシンプルに保つことで、保守・
拡張しやすい状態にする』ということです。かっこよくいうと、『ソフトウェ
アのエントロピーの増大を抑えて、しあわせなプログラミング人生を送りまし
ょう』て感じでしょうか。なんだか標語みたいになりました。べつにかっこよ
くなかったですね。
リファクタリングによって、『設計の向上(設計の劣化を防ぐ)』と『可読性
の向上』を得ることができ、拡張やバグ修正をやり易くすることができるわけ
です。筆者としては『美しいソースを書いて自己満足を得られる』『他人にソー
スを読まれても恥ずかしくない』などの効果も大好きです。

ここまで読んで、リファクタリングっていいなーと思えたなら、一緒に先に進
みましょう。

さて、リファクタリングを行うにあたって必須となるものがあります。それは、
修正が正しいことを確認するためのテストです。このテストが不十分だと安心
して修正することができませんし、テストに時間がかかるようだと、修正を行
う気力が萎えてしまうでしょう。JUnitなどの自動テストツールを導入すること
が望ましいです。
リファクタリングでは、自動テストによって動作を保障しながら、少しずつソー
スコードを改善していきます。あなたもコードを大幅に修正していて、わけが
わからなくなったことは無いですか?

第1回とはいえ、リファクタリングの概要だけで済ませるのもさみしいので、
不吉な匂いの1つ『コメント』を紹介します。

ソースコードにコメントを書くことはとても良いことで、コードの読解に役に
立ちますが、非常に丁寧に書かれているコメントの中には、わかりにくいコー
ドを補うために書かれているものもあります。コメントの必要性を感じたとき
にはリファクタリングを行って、コメントを書かなくても内容がわかるような
ソースコードへと改善しましょう。
メソッド内の処理の一部を説明するのにコメントが必要な場合は、その部分に
対して『メソッドの抽出(例)』を試みましょう。メソッドは細かく抽出され
ているのにコメントがないとわかりにくい場合は、『メソッド名の変更』を試
みましょう。これだけでソースコードは、ぐっと読みやすくなります。

[例:メソッドの抽出]
--< before >-----------------------------------------------
 if (! onCourse()) {
  // 右に10秒間進んでもコースが見つからない場合、
  // 左に進んでコースを探す
  int currentTime = System.getTime();
  goRight();
  while (currentTime + 10 * 1000 > System.getTime()) {
   if (onCourse()) break;
  }
  if (! onCourse()) { goLeft();   ........}
 }
--< after >------------------------------------------------
 if (! onCourse()) {
   searchCourse();
 }
 ----
 private void searchCourse() {
  // 右に10秒間進んでもコースが ...... 
 }
-----------------------------------------------------------
黒線の上を走るロボットがコースを外れた場合に、コースに復帰する処理です。
雰囲気は伝わりましたか?

今回は、リファクタリングの概要と、不吉な匂いから『コメント』を紹介しま
した。実践すれば、コメントが少ないことを指摘されても言い訳できますね(笑)
次回は、不吉な匂いから『重複したコード』を紹介する予定です。わかりにく
い点や質問などは随時とりあげていきたいと思いますので、気軽にご意見をお
寄せください。お待ちしております。(梅田)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E002+0+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E002+0+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E002+0+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【プログラミング】C#で学ぼうオブジェクト指向入門 [1]

▼はじめに 
みなさん、はじめまして、IENAGAと申します。 
 この記事は、初級プログラマである私がみなさんと一緒にC#を使ってオブジェ
クト指向の基礎を勉強していこう、という内容です。C#に触れてオブジェクト
能力をUPしましょう♪ 

▼目標 
今回の目標は、 
 ●C#の開発環境の構築
 ●「Hello オブジェクト倶楽部♪」を出力するプログラムを作成です。 

▼内容 
●C#の開発環境の構築
まず、マイクロソフトの.NETのサイト 
http://www.microsoft.com/japan/msdn/netframework/downloads/ 
より次の2つを順番にダウンロード・インストールします。 
 .NET Framework 再頒布パッケージ       (.NET 実行環境) 
 .NET Framework SDK                    (.NET 開発環境) 
私がダウンロードした時点のバージョンは1.1です。 

次に、コマンドプロンプト(スタートから「ファイル名を指定して実行を選択」、
名前に「cmd」と入力)で 

============================================================ 
set path=%path%;<C#コンパイラ(csc.exe)が存在する場所> 
csc 
============================================================ 

と入力しコンパイラが実行できればOKです。 
私の場合、<C#コンパイラ(csc.exe)が存在する場所>は 
「C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322」でした。 
※備考 
 今回はコマンドプロンプトでsetを使って環境変数のpathを設定しましたが、
毎回入力するのは、面倒なのであらかじめ環境変数を設定するとよいでしょう。

今度は、動くプログラムを作成しましょう。 

●「Hello オブジェクト倶楽部♪」を出力するプログラムを作成 

まず、次に示すHello.cs 
------------------------------------------------------------ 
/// <summary> 
///   Hello オブジェクト倶楽部♪と出力するプログラム 
/// </summary> 
class Hello 
{ 
 static void Main() 
 { 
  System.Console.WriteLine("Hello オブジェクト倶楽部♪"); 
 } 
} 
------------------------------------------------------------ 
を作成・保存します。 
私の場合、 
 ファイル名:Hello.cs 
 保存先:c:\workspace 
で保存しました。拡張子がcsであることに注意してください。 

次に、以下のようにコマンドプロンプトに入力し、 

============================================================ 
cd c:\workspace 
csc Hello.cs 
============================================================ 

ソースファイルをコンパイルします。誤りがなければ、 
c:\workspace内にHello.exeが生成されます。 

あとは、コマンドプロンプトから 

============================================================ 
Hello.exe 
============================================================ 
と実行し 
  
 Hello オブジェクト倶楽部♪ 

と出力されればOKです。 

■まとめ 
 今回は、C#の開発環境を.NET Frameworkを使って整え、簡単な出力プログラ
ムの編集・コンパイル・実行まで行いました。これで、実際にキーボードを触
ってC#を勉強する環境が整いました。 
次回はクラスとインスタンスについて勉強したいと思います。 
それでは。さよなら、さよなら、さいなら。 
______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E003+0+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E003+0+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?E003+0+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。
今回は、2本とも新シリーズで、プログラミング中級向け?のリファクタリン
グと、入門記事のC#講座という組み合わせとなりました。いかがでしたでしょ
うか。

そういえば、かなり紹介するタイミングが遅くなりましたが、Software People
のVol.3で、平鍋さんと天野さんがそれぞれ「アジャイル開発カンファレンス
レポート」、「日本アジャイル最新事情」というColumn記事を寄せています。
余談ですが、天野さんの記事で掲載された、XPアンギャ東京編の写真のせいで
(笑)、あちらこちらの友人に「一人だけXPポーズができてない奴がいる!!」
と突っ込まれまくっています・・・(~_~;)
写真はどうでもいいので(笑)、記事は是非読んでみてください。

(いりさ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://www.ObjectClub.jp/mlmagazine_help.html
〇 免責事項、過去の記事は   ⇒http://www.ObjectClub.jp/mlmagazine.html
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋  健児
Copyright (c)2003 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.