タグ

ブックマーク / nagise.hatenablog.jp (7)

  • なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ

    開発室の雑談。営業側のマネージャが言うには 「今のプロジェクトで自動テストの導入を試みている話をしたら、XXXさんのところでも過去にいくつか導入を試みたけどもみんな上手くいかなかったって話になって」 なるほど? まあ確かに自動テストはシステム開発にとって魅惑の技法ではあるものの、では導入がうまくいっているか? というと普及率は低いと言わざるを得ない。私がお手伝いしたプロジェクトでは、元請け側から自動テストをやるお達しが来たわけだが、紆余曲折あって掛け声倒れのような状態になってしまった。 ビジネス書の煽りタイトルのような件だが、古式ゆかしき受注生産の業務システム開発プロジェクトに自動テストを導入しようとして失敗する事例を聞いたので、僕なりに分析して見出した要素を挙げておこうと思う。 V字モデル ソフトウェア開発の手法としてV字モデルというものがある。 オーダーメイドでシステムを作るにあたっ

    なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ
    rryu
    rryu 2021/04/30
    結局基本設計の時からテストのことを考慮しないとならないが、影も形もない処理のテスト設計が一発でできることはないのでウォーターフォールでは無理ってだけだと思う。
  • 西暦1年は閏年か? - プログラマーの脳みそ

    閏年(うるうどし)の話題。 Twitterで見かけた話題で「西暦1年は閏年かどうかぱっとわからん人おる?」という些か煽り気味のツイートを見かけたのだけども、反射的に「閏年じゃないに決まってるじゃん」とぱっと答えてしまわないだろうか。当にそうだろうか? そう単純な話なのだろうか? プログラミングを学んでカレンダーを扱うことを学ぶ際に置閏法についても簡単に触れられることがある。置閏法というのは閏年や閏月(太陰暦では1年が13ヵ月になるケースがあり追加の月を閏月と呼ぶ)をどのようなルールで挿入するかという話で、まさにアルゴリズムであるからプログラミングの話題と相性がいい。 置閏法 現代の西暦の置閏法(ちじゅんほう)は 西暦を 400 で割り切れる年は閏年 上記以外で西暦を 100 で割り切れる年は平年 上記以外で西暦を 4 で割り切れる年は閏年 上記以外は平年 といった手続きで閏年(つまり2月

    西暦1年は閏年か? - プログラマーの脳みそ
    rryu
    rryu 2020/10/31
    過去の日付を扱うには歴史の知識が必要になって、java.util.Calendarはわりとガチな作りになっているが、前後数十年くらい扱えればいい勢にはめんどくさすぎるのでDate and Time APIが出てきたのだと思う。
  • getter/setterとはなんだったのか - プログラマーの脳みそ

    Javaのgetter/setterのお話。 僕は当時を語るには若すぎるのだけど、過去を振り返って書いてみる。当時を知る人は誤りがあれば指摘してほしいし、情報があればコメントなりトラックバックなりして欲しい。前世紀の話というのは今となっては探すことがなかなか難しくなりつつある。 「privateな変数にpublicなアクセサを定義する」? - ネットの海の片隅で getter/setterとは何か Javaのオブジェクトにフィールドがあったとして、そのフィールドに値を設定するメソッドがsetter(せったー)、そのフィールドの値を取得するメソッドがgetter(げったー)と呼ばれる。慣習としてsetterはsetXXX(int value)といった様にsetから始まる名前をつけ、引数はひとつ。戻り値はvoid型。getterはgetXXX()といった様にgetから始まる名前をつけ、引数はな

    getter/setterとはなんだったのか - プログラマーの脳みそ
    rryu
    rryu 2014/10/13
    Java Beansでプロパティを定義する方法だったものがなぜかプロパティという言葉は伝承されずにgetter/setterに劣化したせいで変になっていったような気がする。
  • ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ

    先日twitterで "Expression Problem" という問題を知った。 静的な型付けの下で、場合分けのデータ構造に対して、新しい場合分けとその場合に対する新しい処理を、元のソースコードに手を加えることなく拡張定義すること 2009-05-16 この問題が意図するところを語るにはまずオブジェクト指向から流れを辿らねばなるまい。 オブジェクト指向のポリモーフィズム Javaのようなオブジェクト指向の言語で、ある特定のメソッドがあることを抽象クラスHogeで保証するとしよう。 public interface Hoge { void hoge(); } このとき、機能性、つまりメソッドというのは増えることがない固定のものだが、継承して実装されたクラスというのは自由に増やすことができる。そして、抽象型Hogeを扱っている既存コードは修正する必要がない。 これはいわゆる開放/閉鎖原則(

    ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ
    rryu
    rryu 2012/04/29
    Visitorパターンはノードの方が増えるとビジターの定義に変更が入るという欠点があるが、ノードとビジターのインターフェースを対に定義して、必要なインターフェースを束ねてビジターの具象型を定義してみるという話
  • 「嫌だ!」が論理的という話 - プログラマーの脳みそ

    (注意)以下は、ある人物の主張を正しいとするならばこのような解釈になるのだろうかという仮説であったことを断っておく。現在、僕はこの仮説を放棄した点も断っておく。 論理的とは何か、といえば論理・的なのだから、 1 論理に関するさま。 2 論理にかなっているさま。きちんと筋道を立てて考えるさま。 ろんりてき ということになる。論理とは何か、というと 1 考えや議論などを進めていく筋道。思考や論証の組み立て。思考の妥当性が保証される法則や形式。 2 事物の間にある法則的な連関。 3 「論理学」の略。 ろんり ということになる。ここで論理学で扱う対象という意味合いでとるとカテゴリが多すぎて泣きたくなる。 弁証法的論理 形式論理 数理論理学 二値論理 多値論理 様相論理 演繹論理 帰納論理 命題論理 述語論理 量子論理 虚偽論 非形式論理学 因明 - 仏教論理学 直観論理 論理学 - Wikiped

    「嫌だ!」が論理的という話 - プログラマーの脳みそ
    rryu
    rryu 2011/09/02
    「△は嫌」という主張自体は論理的かもしれないか、△自体が無くなっても嫌という感情が無くなるとは限らないので、反対派の主張としては論理的ではない。
  • メソッドの最後でしかreturnを書いてはいけない時 - プログラマーの脳みそ

    柴田 芳樹 (Yoshiki Shibata):So-netブログに出てくる、「メソッドや関数の最後でしかreturn文を書いてはいけないと、プロジェクトの標準として何らかの方法で強制」された場合、機械的な書き換えを行うことで対応することが出来る。 まずは戻り値がvoidのメソッド。条件分岐などでreturnしているようなケース。 public void hoge1a(boolean b) { if (b) { System.out.println("true"); return; } else { System.out.println("false"); return; } } これはラベル付きブロック+break文に置き換えることで単純に置換できる。 public void hoge1b(boolean b) { ret:{ if (b) { System.out.println("t

    メソッドの最後でしかreturnを書いてはいけない時 - プログラマーの脳みそ
    rryu
    rryu 2010/05/13
    すべてのプログラムは入り口ひとつ出口ひとつの適性プログラムに変換でき、すべての適性プログラムは連接・選択・反復の組合せで表すことができる(構造化定理)から変に逆算されて途中return禁止ルールが出来たというの
  • 型システムの理論の影 - プログラマーの脳みそ

    プログラムにおける型システムってのは数学・論理学の型理論を基盤にしていて、抽象的なもやもやとした代物。この型システムの理論を現実に実装したものとして、多様なプログラム言語が存在するわけだ。 鶏と卵という話だとどっちなんだろう。実装が先でそれを理論としてまとめたって感じなのか、理論がまず考えられてプログラム言語が実装されたのか…。最初のプログラム言語というと1954年に登場したFORTRANで、IBMのジョン・バッカス氏*1によって考案された。FORTRANにはいくつかの数値型がある。この頃に型システムの体系的な理論ができていたとは思えないから多分、実装が先行なんだろうな。 理論としての型、そのJava実装のクラス 型システム(type system)でいう型(type)は型理論に基づくわけで、数学的な抽象概念に近い。例えば僕らが日常生活で数学的概念である1/3という値を厳密に使うことはない

    型システムの理論の影 - プログラマーの脳みそ
  • 1