Java.use(better); Episode#23 ファインダーを作成する
《前の記事|記事一覧|次の記事》
Java.use(better, Scala);
Episode#23ファインダーを作成する:リファクタリング
悲しめる心よ、落ちついて悔ゆるのをやめよ
雲の後ろには太陽が照っている
Henry Wadsworth Longfellow - Wikipedia
《関連記事》
┃余録:Complete Constructor, idiom#68
■ 事例:class Progression
次の事例は、その理解を深めるための便宜的なものです。任意の等差数列を生成するときに、
scala> print( new Progression(5).toList ) List(0, 1, 2, 3, 4) scala> print( new Progression(3,7).toList ) List(3, 4, 5, 6) scala> print( new Progression(3,9,2).toList ) List(3, 5, 7)
コンストラクターには、3つの引数を指定できます。このとき、どの引数を省略するかで、その解釈が異なります。これは次のように実現します。
import scala.collection.mutable.ListBuffer class Progression(start: Int, end: Int, step: Int) { def this(start: Int, end: Int) = this(start, end, 1) def this(end: Int) = this(0, end) def toList() = { val buf = ListBuffer.empty[Int] var i = start while (i < end) { buf += i; i += step } buf.toList } }
引数を2つ指定すると、基本コンストラクター this(Int,Int,Int) の第3引数に 1 を指定したと見なします。引数を1つ指定すると、コンストラクター this(Int,Int) の第1引数に 0 を指定したと見なします。
コンストラクターを多重定義するときには、ひとつの「完全な」基本コンストラクターに帰着させます。Scala では、クラスを定義するときに、基本コンストラクターの引数を指定できます。すると、これを見るだけで、意味のあるインスタンスを生成するために、何が必要かが分ります。
┃未来への考察
成功の秘訣は「自分に最適な」ダイエット健康法を身に付けることです。同様に、チームにとって最適な開発環境を構築することが、プロジェクトを成功へ導く鍵を握ります。「正解が1つとは限らない」ところに、プログラミングの醍醐味があります。また「正解があるとは限らない」ところが、プログラミングの奥深さです。
アジャイル開発では、耐震から免震へ転換した、建築の歴史から多くを学べます。始めに最上階から構築するという逆転の発想は、古典的な手法の問題を解決しました。というのも、完成の後に足場を解体する「無駄な作業」を解消するからです。上流工程から下流工程へ進む古典的な手法は、足場がないと建築が進まない「始めに設計ありき」というものでした。
美術品の修復は、修復技術がさらに進化したとき、やり直すことを前提に行われます。その考え方は、ソフトウエア開発にも通じます。ソフトウエアが進化を続けるかぎり、要求仕様の変更は避けられません。なによりそれは、そのソフトウエアが支持されている証です。どんな変化にも柔軟に対処できる開発環境を構築するには、チームが「リファクタリングを開発スケジュールに盛り込めるか否か」に掛かっています。
》作業中です《
↑ TOP