タグ

ブックマーク / bleis-tift.hatenablog.com (6)

  • C++ でロガーっぽい何か - ぐるぐる~

    わんくまで見た方法を使ってでっちあげてみた。 C++ のコードを書いたのは久しぶりな気がする・・・ オリジナルと違う部分は、純粋仮想関数で固めた log_adapter でどうのこうのするんじゃなくて、template 使ったところ。 どーせこの辺は静的に決まるだろうから、わざわざ動的なディスパッチは必要ないんじゃないかなぁ。 ただ、log_info の with_logger で log_info_with_logger 生成して返すとか、なんだか微妙。 実際にログ出力を行うクラス側に operator() を持たせるとかしてごにょごにょやればいいんだろうけど・・・ そうすると実際にログ出力を行う側の記述が面倒になっちゃうんだよなぁ・・・ 以下コード。 #include <iostream> #include <cstdarg> #include <cstdio> // グローバルを汚し

    C++ でロガーっぽい何か - ぐるぐる~
  • リソースを保持するクラスの設計指針 (案) - ぐるぐる~

    例外について色々と考えてみた - ぐるぐる〜の 「例外と RAII イディオム」での考えた、「tryOpen 方式」をもう少しだけ煮詰めてみる。 リソースを保持するクラスはコンストラクタで例外を投げない Java では、リソースを確実に解放するために、try-finally を用いる必要がある。 FileInputStream fin = null; try { fin = new FileInputStream(fileName); ... } finally { if (fin != null) fin.close(); } これは、コンストラクタが例外を送出した場合でもリソースを解放する必要があるためだが、コンストラクタで例外を投げないようにしておけば、以下のように記述することができる。 FileInputStream2 fin = new FileInputStream2(file

    リソースを保持するクラスの設計指針 (案) - ぐるぐる~
    kenichiice
    kenichiice 2009/09/08
    「「例外と RAII イディオム」での考えた、「tryOpen 方式」をもう少しだけ煮詰めてみる。」
  • 例外について色々と考えてみた - ぐるぐる~

    オブジェクト倶楽部、コーディング規約の会の「C# コーディング標準」の駄目なところ - ぐるぐる〜から派生して、 「他の例外クラスを継承しただけの例外クラスを作らない」に不同意の理由 - Diary of Dary、 例外クラスの指針 - とC#について書くmatarilloの雑記や、さらには TwitterJava の検査例外と非検査例外についての議論へと発展したので例外についてまじめに考えてみた。 あくまで、今の自分の考えなので真に受けない方がいいかも!そもそも経験が少ないので、トンチンカンなことを言ってるかもしれません。 あ、それと、用語は基的に Java から取ってきています。ただ、メソッドじゃなくて関数を使っているけど、これに深い意味はありません。多分。 例外とは まず、例外とは一体何者なのか、ということ。 ここでは面倒を避けるために、Meyer 先生の定義を借りること

    例外について色々と考えてみた - ぐるぐる~
    kenichiice
    kenichiice 2009/08/12
    「さらに問題なのは、Java ではコンストラクタでリソースを取得しない方が望ましいのではないか、ということだ。」
  • 流れるようなインターフェイス - ぐるぐる~

    なんか単に this を返せばいいって思っている人も多いようけど、ただ this を返せばそれが使いやすいかって言われると、正直微妙。 例えば、 public static class StringUtil { public static SubstrInfo Substr(this string str) { return new SubstrInfo(str); } public sealed class SubstrInfo { public SubstrInfo From(int from) { ... return this; } public SubstrInfo To(int to) { ... return this; } public SubstrInfo Length(int length) { ... return this; } } } なんてクラスは、 "hoge

    流れるようなインターフェイス - ぐるぐる~
  • SQL の命名規約とフォーマット - ぐるぐる~

    ときどきの雑記帖さん経由で、私のSQLフォーマットをみて、自分の規約もさらしてみる*1 *2。 命名規約 テーブルやビュー、共通表式は Pascal 記法で、複数形とする*3。例えば、Employees とか Works とか ただし、リレーションテーブルはその限りではない。例えば、EmployeeWork とか カラム名はアンダーバー区切りで、単数形を基とする。例えば、name とか 人工キーを使用する場合、 自身の人工キーは id とする 外部キーはテーブルの頭文字の小文字 _id を付けたものとする。例えば、e_id とか 重複する場合は・・・決めてない (ぉ テーブルに別名を付ける場合、テーブル名の単数形を使用する 自己結合等でテーブルの区別が必要な場合、子テーブル側に C と付ける 孫には GC、GGC と付けていく (実際、そんなに深い自己結合なんてしないけど) フォーマット

    SQL の命名規約とフォーマット - ぐるぐる~
  • コレクションイニシャライザとインスタンスイニシャライザ - ぐるぐる~

    C#3.0のコレクションイニシャライザを見て、Javaのインスタンスイニシャライザ*1に似ているな、と思った。 まず、C#3.0のコレクションイニシャライザはこんな感じ。 var list = new List<string> { "hoge", "piyo" }; で、Javaのインスタンスイニシャライザはこう。 ArrayList<String> list = new ArrayList<String>() {{ add("hoge"); add("piyo"); }}; やっぱり専用の構文があった方がわかりやすいな。 *1:とanonymous classを使った書き方

    コレクションイニシャライザとインスタンスイニシャライザ - ぐるぐる~
    kenichiice
    kenichiice 2008/11/29
    インスタンスイニシャライザ
  • 1