--/--/--(--)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コメント(-) | トラックバック(-) | --:--:--

2010/05/22(土)


まず、バグ修正や仕様変更が起きます。
時間がなくて、その場しのぎで非効率な修正が施されます。
ここでプログラムの可読性が損なわれます。

保守フェーズに入り、設計者やコード作成者がいなくなります。
後任が全体を把握しきれないまま、コードの追加・修正を行います。
似たような処理が点在するようになり、しかもスーパークラスを継承してなかったりします。

製品のバージョンアップに伴い、利用者のデータアクセス範囲が広がる機能が追加されます。
今まで関係性のなかったクラスが、関係を持たざるを得なくなってしまいます。
徐々にデータやメソッドのアクセス権が緩くなり、あらゆるスコープが拡大、保守性が著しく低下していきます。

そのうち、とある機能追加の実装において、致命的な仕様ミスが見つかります。
当初の設計思想に限界が生じ、クラスをまたがる大胆なバイパス工事が行われます。
もはや修正するたびにプログラム全体の品質が危険にさらされ、正常に動いていた処理すら動かなくなります。

それでもなんとかリリースにこじつけ、ようやく安定稼動するようになります。
しかし、わずか数年でプラットフォームが陳腐化し、使い物にならなくなります。
スポンサーサイト
コメント(0) | トラックバック(0) | 12:10:44

2010/05/15(土)


JavaScriptにはクラスの概念がなく、C++やJavaのような言語に慣れた人にとってはその言語仕様の違いに戸惑う方も多いと思います。prototype.jsのClass.createは、この問題を少しだけ解決してくれます。

細かい仕様の話はともかく、手っ取り早くC++やJavaのように記述できないかと模索している方はこちらをご覧ください。

.htmlファイル
<script type="text/JavaScript">
var sample = new SampleClass(1,"test");
sample.firstMethod("test");
sample.lastMethod();
</script>

.jsファイル
// prototype.jsのClassオブジェクトの部分を抜粋
var Class = {
 create: function(){
  return function(){
   this.initialize.apply(this,arguments);
  }
 }
}
 
var SampleClass = Class.create();
SampleClass.prototype = {
 val1: 1,
 val2: "test",
 
 // コンストラクタ
 initialize: function(r_val1,r_val2){
  this.val1 = r_val1;
  this.val2 = r_val2;
 },
 
 // メソッド
 firstMethod: function(r_val1){
  this.val2 = r_val1;
 },
 
 // 最後のメソッド
 lastMethod: function(){
 }
};

注意点としては、最後のメソッドのみ括弧を閉じた後にカンマがいらないことです。

コメント(2) | トラックバック(0) | 18:06:49

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。