タグ

ブックマーク / ryoasai.hatenadiary.org (5)

  • Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その1) - 達人プログラマーを目指して

    昨日書いたSI業界(日)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指してが予想以上に大きな反響があり驚いています。特に、あの有名なひがさんにもSI業界の現状と未来に関してコメントをしていただきました。(SI業界からはさっさと抜けだしたほうがいい) ただし、SI業界の今後がどうかということや新しいサービスを使ったビジネスのことについては、私自身最先端技術に十分にキャッチアップできておらず、自分の考えを整理できていないため、一旦考えないことにして、ここでは例の試験問題の設計とリファクタリングについて考察してみたいと思います。具体的な例に基づいて説明することで、オブジェクト指向がSI業界の多くの方々に考えられているほど理解不能なものなのではなく、問題を単純化し、プログラムの保守性を桁違いに向上させるうえできわめて重要な役割を果たすということ

    Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート(その1) - 達人プログラマーを目指して
  • いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して

    正しく意味を理解している方にとっては、まったく常識レベルの話であり、何をいまさらと思われる方々も多いかと思いますが、大規模案件のレガシーコードなど、私が仕事で見かけるJavaのコードを読むと、「このコードを書いたSEやPGの方々は、はたして継承の意味を正しく理解していないのではないか」と思われる設計のコードに出会うことが少なからずあります。現在では改良されましたが(Javaプログラミング能力認定試験の問題がかなり改善されていました - 達人プログラマーを目指して)、以前のJavaプログラム認定試験の問題は、そうした不適切な設計がされている典型的な例となっていたのですが、実際、SI業界ではあのような品質のコードのシステムが今でも現役で多数稼動しているというだけでなく、現在でも新たに生み出されているというのは残念ながら紛れもない事実のようなのです。 確かに新人研修で「哺乳類を継承して犬クラスと

    いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して
  • Clojure言語基本の「き」 - 達人プログラマーを目指して

    ふと思い立ってClojureの勉強を始めることにしました。 - 達人プログラマーを目指してで書いたように、10日前にClojureの勉強を始めました。まだ勉強を始めたばかりのということもあり、他人に上手く正確に説明できる段階ではないかと思いますが、自分自身超初心者の立場で書くということも有意義であると思うので、間違いを恐れずに今まで理解したことのポイントについて書いてみようと思います。*1 スカラー値のリテラル ClojureはREPL(Read Eval Print Loop)という対話的実行環境を持つので、いきなり大きなプログラムを作成しなくても、一行一行結果を確認しながら勉強することができます。したがって、数値や文字列などのリテラルをREPLのプロンプトに入力すると、値がそのまま結果として返ってくることが確認できます。 user=> 0xff 255 user=> 0377 255

    Clojure言語基本の「き」 - 達人プログラマーを目指して
  • Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して

    Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型はエントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない

    Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して
  • Groovyのオーバーロードメソッドの解決はユニークなところがある - 達人プログラマーを目指して

    Java、C#、C++などを含めて現代のほとんどの静的な型付けのプログラミング言語では、異なる型を取る複数のメソッドを同じクラス中に多重定義することができます。これはメソッドのオーバーロード(overload)*1として知られています。たとえば、以下のように同じtestという名前のメソッドを複数定義することができます。 public class Sample { void test(String strParam) { System.out.println("String = " + strParam); } void test(Integer intParam) { System.out.println("Integer = " + intParam); } } この場合、どちらのメソッドが呼び出されるかは、呼び出し側がパラメーターで渡した変数のコンパイル時の型で静的に決まります。ですか

    Groovyのオーバーロードメソッドの解決はユニークなところがある - 達人プログラマーを目指して
  • 1