Program

例外について色々と考えてみた

オブジェクト倶楽部、コーディング規約の会の「C# コーディング標準」の駄目なところ - ぐるぐる〜から派生して、 「他の例外クラスを継承しただけの例外クラスを作らない」に不同意の理由 - Diary of Dary、 例外クラスの指針 - 猫とC#について書くmatarill…

LinkedList の途中への挿入の効率

連結リストの挿入は O(1) ってのに異論はないんだけど、挿入場所が分かっていなければ O(1) じゃなくて O(n) になるってのは忘れられがち・・・というか、下手したら認識されてさえいない。 例えば List#add(int index, E element) の効率だけど、これは ind…

条件演算子・・・厨?

名前 症状 僕の状態 三項演算子厨 どんどんネストした三項演算子を書いてしまう.気が付くと自分でも良くわからなくなってる事もある 治療済み プログラマの麻疹 - YoshioriのBlog 三項演算子は多分条件演算子のことだろう、ってのはいいとして、ネストした…

流れるようなインターフェイス書いてて思ったこと

流れるようなインターフェイス書いてて、「これメソッドのグルーピングに使えるんじゃね?」って思った。 例えば Visual Studio でも Eclipse でも、補完機能って平坦なリストなんだよね。 オーバーロードは一つにまとめてくれるけど、似たような名前のメソ…

特定ディレクトリ以下の列挙 (再帰呼び出しとループ)

例えば、あるディレクトリ以下のファイル名を取得したい場合の再帰のみ使ったもの、ループのみ使ったもの、両方使ったもののどれが一番分かりやすいか。 まずは自分ならどう書くかを形にした上で続きを読むといいのかな。 あ、サンプルは Java です。 両方 …

値渡しと参照渡し (と参照の値渡し)

値渡しと参照渡しは、分かってしまえば何も難しいところはないんだけど、分かるまでにちょっとした壁があるというかなんとうか・・・ てことでちょっとまとめておきますねー 値渡し (call-by-value) と参照渡し (call-by-reference) の違い 値渡しと参照渡し…

strong typedef しててもアプリケーションハンガリアンが有効な場合はある

strong typedef するってなんだ、ってのは置いとくとして、適切な名前の基準三つ。を読んでちょっと思ったことが、上のタイトル。 どういう状況かというと、変数名の補完機能の付いたエディタ*1で GUI プログラム書いてるとか、そんな感じ。 GUI コンポーネ…

CleanCode Chapter 4:Comments

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin Series)作者: Robert C. Martin出版社/メーカー: Prentice Hall発売日: 2008/08/01メディア: ペーパーバック購入: 1人 クリック: 62回この商品を含むブログ (21件) を見るこの前…

CleanCode Chapter 3:Functions

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin Series)作者: Robert C. Martin出版社/メーカー: Prentice Hall発売日: 2008/08/01メディア: ペーパーバック購入: 1人 クリック: 62回この商品を含むブログ (21件) を見るChapter…

分からん・・・

明白といわれても CTMCP、ちまちまとしたペースで読み進んでます。が、今日さしかかったところでの練習問題 3.10 練習問題1.実数の絶対値実数の絶対値を計算する関数 Abs を定義したい。次の定義はうまくいかない。 fun {Abs X} if X < 0 then ~X else X en…

セミコロンのあるなしで挙動が変わるプログラム

例えばこんな感じ。 public final class Main { static int count = 0; static boolean m1() { System.out.println("m1"); return false; } static boolean m2() { System.out.println("m2"); return count++ != 1; } static void reset() { System.out.prin…

プリミティブ型だからといって特別扱いする必要はない・・・と、思う

仮想マシンがプリミティブ型を特別扱いしてるからと言って、その上に乗っている言語でプリミティブ型を特別扱いする必要なんてない。 どういうことかというと、 int i = 0; String str = i.toString(); なんてことが出来ても何も問題はない*1。 プリミティブ…

昔のコード

昔のコードは読むに耐えないとはよく言うけれど、どのくらい昔のコードが読むに耐えないのだろう。 自分の感覚では、触らなくなって1年くらいなんだけど・・・ 逆に言えば、触り続けてるコードなら全然平気 (当たり前か)。

ガード節による入れ子条件記述の置き換え

「リファクタリング」の「ガード節による条件記述の置き換え」 って項目がまさに、 ifの入れ子になるような処理を、関数の最初で値検査してreturn(あるいは例外をスロー)に置き換えるって話だったと思います。 途中でreturn編 ちょっとりふぁくと - 神様なん…

Visio使えねー

Visioで書いたE-R図からCREATE TABLE文とかテーブル仕様書を出力しようとしたんだけど、データベースプロパティにアクセスできない・・・

真・バブルソート

ここで書いたバブルソート(偽)はアルゴリズムじゃなくて、引き起こされる結果の特徴的な部分から考えた。 思考の順序としては、 バブルソートは一番後ろから確定していくよなー なら最大値を一番後ろにくっつけて、それ以外をまた同じソートにかければいっか…

単純なソートはどれが一番単純か

主に行数的な意味で。 Javaで書いてみた。 private static void swap(int[] target, int index1, int index2) { int tmp = target[index1]; target[index1] = target[index2]; target[index2] = tmp; } // 挿入ソート public static int[] insSort(int[] tar…

上のいくつかのソートをHaskellで書いてみた

超適当。 -- 挿入ソート import Data.List insSort = foldr insert [] -- 選択ソート selSort [] = [] selSort xs = let min = minimum xs in [min] ++ selSort [x | x <- xs, x /= min] -- バブルソート(偽) bblSort [] = [] bblSort xs = let max = maximu…

ソート

何故だか忘れたけど、読書会でソートの話題が出たので話題に出たソート、出なかったソートを紹介しておく。 ボゴソート なんで最初がこれなんだ、というのは気にしない。 簡単に言うと、適当に選んで、偶然そろうのを待つという方法。 もちろん実用性なんて…

フォールスルーのいろいろ

switch文でよく話題に出てくるフォールスルーだけど、言語によって実は結構違う。 まずはJavaとC++ // Java int i = 0; switch (i) { case 0: System.out.println("0"); case 1: System.out.println("1"); break; } // C++ int i = 0; switch (i) { case 0: …

巨大な共通定数クラス・・・あるある

コーディングの掟(最強作法) 現場でよく見る不可解なJavaコードを一掃せよ! (開発の現場セレクション)作者: arton,宇野るいも出版社/メーカー: 翔泳社発売日: 2008/09/18メディア: 単行本(ソフトカバー)購入: 29人 クリック: 339回この商品を含むブログ (5…

トリッキーなコードを避けろ、ねぇ

トリッキーなコードを避けろと言っている人が // Java if ((str == null ? "" : str).isEmpty()) { ... } こんなコード書いちゃいかんでしょ。

postfix/suffix

そしてn。 snprintf なんてのもあるのでアレですが、locale や re-entrant の目印が _l とか _r という postfix になっていたりで統一感がありませんね。 ってまあ途中に潜り込ませるやり方がそうそうできるわけでもない。と。 あと、postfix が複数ついたり…

C言語出来るって言いませんでした?

感覚でプログラム書く人なんているんだなぁ。 と、言うのも、昨日 char* hoge(); ... void piyo() { char firstCh; ... firstCh = hoge()[0]; ... } こんなコードを書いたら、「そんなコード通らないでしょ」と。 なんで?と聞いたら、「いや、普通に考えて…

iBATIS(もしくはiBATIS.NET)

これはなかなか自分にあったO/Rマッピングツールかもしれない。 ちょっと調べてみようかな。

おろ?

ときどきの雑記帖 i戦士篇 んーと?これじゃぁだめなんだろうか? とりあえず、Java、python、rubyで試してみたけど全部うまく動いてるみたい。 そういう問題ではない・・・?

オブジェクト指向

クラスを使っていればオブジェクト指向なんだと勘違いしてるやつ多すぎ。 意味もなくgetter/setter用意してるやつ多すぎ。 未だにシステムハンガリアン使ってるやつ多すぎ。 カプセル化=データ隠蔽だと思ってるやつ多すぎ。 継承を実装の継承のためだけに使…

プロパティとメソッド

プロパティとメソッド、どっちを使えばいいかの境界線ってどうなってんだろ? C#前提で話を進めるとして、個人的には Object.ToString()メソッドじゃなくてObject.Textプロパティ Object.GetType()メソッドじゃなくてObject.Typeプロパティ Object.GetHashCo…

Webプログラムに必要な知識

趣味のWebプログラムじゃなくて、仕事の場合に「必要だろ」、って知識。 文字に関する知識 脆弱性に関する知識 ユーザビリティに関する知識 マークアップ言語、CSS、JavaScript サーバサイドで使用する言語、フレームワークに関する知識 SQL、データベース、…

O/Rマッピングに関する勘違い

なんでO/Rマッピングが自分にとってしっくりこないのかわかった気がする。 オブジェクトとリレーショナルDBをマッピングするものだと思ってたんだけど、実際にはオブジェクトをリレーショナルDBにマッピングするものだったからだな。 えらい長い間勘違いして…