GUI画面間のデータの受け渡しはグローバル変数で行うべきでない

ごく最近出くわして嫌な気分になった、C/C++のコードパターン例を一つ紹介します(MFCを使ったのWindows用GUIプログラムです)。

BOOL CMainWindow::AskUserAboutHoge() {
    CHogeDialog* dlg = new CHogeDialog( this );
    if( dlg->DoModal() == FALSE ) {
        delete dlg;
        return FALSE;
    }
    delete dlg;
    return TRUE;
}

このコード、オカシイですよね? 🙁

続きを読む “GUI画面間のデータの受け渡しはグローバル変数で行うべきでない”

iPhoneでGmailを使う方法(プッシュ通知&省バッテリ)

AppleのiPhoneでGmailを使う場合、色々な方法でセットアップすることができます。そこで、次に挙げる2つの観点でいくつかの方法を比較してみました。

  • 通知のリアルタイム性(メール到着からiPhoneに通知が来るまでの時間の短さ)
  • 省エネ性(いかにバッテリー消費を節約できるか)

私なりの結論は、Googleが提供しているiOS向け「Gmail」アプリをメインで使用しつつ、標準の「メール」アプリで1時間おきにメールを受信する構成がベストとなりました。以下、私が調べて分かったことなどを記しておきます。

なお技術的には、ここでの「iPhone」は「iOS 6」と読み替えるとより正確です。

続きを読む “iPhoneでGmailを使う方法(プッシュ通知&省バッテリ)”

丸投げ

ソフトウェアは設計上の階層構造を持つことが多く、ほぼ間違いなく最上位をアプリ層(そのアプリ固有の処理)とした複数の階層を重ねた形になっています。ごく単純なアプリの場合は最上位のアプリ層のみが存在すると解釈すれば、やはり階層構造です。このとき、特に最初が単純な一階層のアプリだったものに機能を追加していく場合、ある程度の規模を越えると階層構造を組まないと管理不可能になっていきます。本日はこの階層構造と「丸投げ」について思うことを書きます。
続きを読む “丸投げ”