タグ

Programmingに関するgabariのブックマーク (424)

  • レガシーコード改善の戦略と戦術

    自己紹介 name: 和田 卓人 hatena : t-wada twitter : t_wada github : twada レガシーコード改善コンサルティングも多いです

    レガシーコード改善の戦略と戦術
  • モデルやメソッドに名前を付けるときは英語の品詞に気をつけよう - Qiita

    はじめに 他の人が書いたコードを読んでいるときに時々気になるのが、英語の間違いです。 特に動詞、名詞、形容詞の使い分けが間違っていたりすると、かなり違和感を感じます。 そこで今回はモデル(=クラス)やメソッドに名前を付けるときの基的な原則をまとめてみます。 また、英文法的に正しい品詞が選べるようになるための習慣についても最後に説明します。 想定する言語/フレームワーク この記事の説明ではRuby/Ruby on Railsを想定しています。 ただし、基的な考え方は他の言語でも同じように使えるはずです。 モデルの名前は名詞にする 例: 「支払い情報」を表すモデルを作りたい場合 × Pay ○ Payment 「支払う = payか。よし。」でモデルを作ってはいけません! payは動詞で、payの名詞形がpaymentです。 Payモデルではなく、Paymentモデルを作りましょう。 例:

    モデルやメソッドに名前を付けるときは英語の品詞に気をつけよう - Qiita
    gabari
    gabari 2014/05/28
    defineは動詞だからdefinitionで検索したほうがいいとおもうんだ…/全体的に同意
  • テスト考2014 - Hidden in Plain Sight

    年々、ウェブアプリを開発するときにテストを書こうという機運が強くなっていると感じる。 これは、開発パラダイムの成熟を意味することであり、基的に良いことだと思っている。 しかし同時に「テスト原理主義」とでもいうような極端な考え方もでてきていて、開発スタイルをめぐって摩擦が起こっている。 そして、この議論は「テストは、ないよりあったほうが良いよね」という、微視的には誰も反論できないロジックに押し通されがちで、「地獄への道は善意で舗装されている」の典型的な現象に見えて仕方がない。 テストを書かない、というと背景にどんな深い考えがあっても素人くさく聞こえ、逆にテストを書くというだけで良いプログラマーに見える、という非対称な化粧効果がある。ソフトウェア・コンサルティング会社がテスト好きなのは決して偶然ではない。 ソフトウェアというのは、結局のところ、動いてナンボ、使われてナンボである。 期待するも

    テスト考2014 - Hidden in Plain Sight
  • テストを書く文化を育てる戦略と戦術

    at DevLOVE現場甲子園2013 2013/11/09 (土) http://http://devlove.doorkeeper.jp/events/5464Read less

    テストを書く文化を育てる戦略と戦術
    gabari
    gabari 2013/12/12
    「リファクタリングしたいというとできない」は名言
  • Macで実行ファイルの依存共有ライブラリを調べる方法 メモ (Unix lddコマンドの代用) - unstable diary

    Macで実行ファイルの依存共有ライブラリを調べる方法のメモです。 otool -L 実行ファイル というコマンドで調べられるようです。 Macには無いUnixのlddコマンドの代用に使えます。 以上ただの個人的なメモ。

    Macで実行ファイルの依存共有ライブラリを調べる方法 メモ (Unix lddコマンドの代用) - unstable diary
  • テストが間違ってたら? - 日々常々

    「テストが間違ってたらどうするんだ」 自動テストの話をするとよく言われます。テストが間違ってたらわからないじゃないか。手動テストであれば、注意深く目で確認していれば間違いに気づけると言う主張です。 「目で確認していれば気づける」のは間違いではありません。必ず気付けるわけではありませんが、十分な知識を持った人が、十分な集中力と責任感をもってエビデンスを確認すれば、誤りに気付ける可能性は高いと思います。 品質(主に機能性)を目的とした自動テストでも、それを行う必要があります。それがテストコードのレビューです。 手動テストの場合、テスト実施前に手順や確認項目のレビュー、実施中の確認、実施後のエビデンス確認と、人が確認するタイミング*1が三カ所あります。 これに対し自動テストの場合、テストが書かれた時のみ。実行中は勿論、実行結果の確認に注意はありません。ただ成功か失敗かだけなので。ならば、テストコ

    テストが間違ってたら? - 日々常々
  • TDDBC横浜3rd

    The spirit of TDD - Oct 22, 2010 at Cybozu Developers Conference

    TDDBC横浜3rd
  • #俺が見たクソコード選手権 まとめ

    ハッシュタグ #俺が見たクソコード選手権 が賑わっていて面白かったのでまとめてみました。 こちらに簡単な補足説明を用意しました。よろしければどうぞ http://elephnote.com/blog/archives/874 気持ちのわかるものから全く意図不明なものまで。 続きを読む

    #俺が見たクソコード選手権 まとめ
    gabari
    gabari 2013/08/07
    分かりやすくクソで安心した。/if( ! NotMatch ) が今まで一番殺意を覚えた。/あと2重になってるfor文の内側のループの中で外側のfor文のインデックスいじるとかテクニカルなことされた時も困った
  • LinuxカーネルのMLにおける悪口の励行についての議論勃発

    Linuxカーネルのメーリングリストは、常に罵詈雑言に満ち溢れているが、そういうのは辞めて大人になろうという主張がSarah Sharp[1]によってなされた。なかなか面白い。 きっかけは、いたって日常的な罵倒混じりの議論に、Sarah Sharpが横槍を入れたところから始まった。 LKML: Sarah Sharp: Re: [ 00/19] 3.10.1-stable review On Fri, 12 Jul 2013 18:17:08 +0200, Ingo Molnar <mingo@kernel.org> wrote: * Linus Torvalds <torvalds@linux-foundation.org> wrote: On Fri, Jul 12, 2013 at 8:47 AM, Steven Rostedt <rostedt@goodmis.org> wrote

    gabari
    gabari 2013/07/17
    怒っているけど論理的だし、(いくつかの文を除けば)あんまり悪口って感じを受けなかったなぁ。英語のニュアンス難しい。
  • アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ

    子供のころからできるだけ手抜きして成果を挙げることだけは長けている山です。 今回は、C/C++ で作ったプログラムが運用中にクラッシュするときのデバッグ方法のお話しです。 開発中のデバッグは gdb などでソース追いながらデバッグできますが、運用中ですと strip していたり最適化していたりしてデバッグが難しくなります。 そもそも、いきなりクラッシュすると情報が残らずに困ってしまいます。そんなときどうするか。 Step1. スタックトレースを出力する こんな関数を用意しましょう。Linux 以外の人はそれなりに実装してください。 #include <execinfo.h> #include <unistd.h> void dump_stack() { void* bt[100]; int n = backtrace(bt, 100); backtrace_symbols_fd(bt,

    アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ
  • なぜ「応募資格:JAVA業務経験2年以上」のような求人がエンジニアに見向きもされないのか - 表参道フォークウヱル別館

    エンジニア採用をテーマにして3回くらいのシリーズで記事を書くことになり、今回はその第1回。 エンジニア経験のない人事の人がやりがちな、エンジニアに馬鹿にされる求人を作ってしまわないためのアドバイスをつらつらと書いていきます。 さて、タイトルにあるような「応募資格:JAVA業務経験2年以上」といった求人票はエンジニアの方なら一度は目にしたことがあると思います。 この手の求人を見るたびに、「気で採用する気があるんだろうか?」と他人事ながら心配してしまうわけですが、おそらく書いた採用担当者は真面目に自分の仕事をこなしているつもりなのでしょう。 しかしまともなエンジニアが見れば、この短い文章からその会社のイケてなさ加減を感じ取り、その会社を事前に知っていて好印象を持っていたとかでなければ、即座にページを閉じて読み飛ばすこと請け合いです。 それはなぜか? ダメな点のまず第一は、「その会社が技術

    gabari
    gabari 2013/07/06
    JAXAかと空見した。
  • clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。

    先日llvm 3.3がリリースされました。aarch64(arm 64bit)のコードが生成できるようになったということなので、ソースからビルドして遊んでいたのですが、さりげなく凄く最適化されたコードが生成されているのに気がつきました。aarch64だと今は実行して確認できる環境が手元に無いので、普通のarmv7-aで同じことを試しました。 ここで使ったコードとその結果はgistに貼りました。 https://gist.github.com/tetsu-koba/5835724 ソースコード int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } 1からnまでの総和を求める関数です。1から100までの総和が5050なのはガウス少年の逸話で有名ですね。 gcc 4.8.

    clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。
  • QThread

    概要 QThread クラスを使うと、処理をマルチスレッド化できるぞ 長時間を要する処理を行う場合に、GUIを止めないマルチスレッドは効果的だぞ だが、はまりやすいことがあるので、要注意だ 基事項 Qt はイベントドリブンなフレームワーク exec() によりイベントループを開始する イベントはイベントループにより処理され、適切なハンドラがコールされる イベントディスパッチはハンドラの処理が終了してから行われるので、処理が長引くとディスパッチ・ハンドラの処理が遅延する ┌──────────┐ │ イベントキュー・ │┌─────────┐┌─────────┐┌─────────┐ │ ディスパッチャ ││ QObject::event() ││ keyPressEvent() ││ paintEvent() │ └────┬─────┘└────┬────┘└────┬────┘└─

    gabari
    gabari 2013/06/20
    Qtのサンプルに継承するなって書いてくれればいいのに。
  • PlantUML の使い方 | プログラマーズ雑記帳

    テキストから UML を生成する PlantUML についての解説記事を書いてみました。 PlantUML の使い方 (今回) シーケンス図 クラス図 オブジェクト図 パッケージ図 ユースケース図 アクティビティ図 状態遷移(ステートマシン)図 コンポーネント図 配置図 skinparam PlantUML 実行用のバッチファイル 今回は PlantUML の使い方の説明です。 PlantUML とは インストール 日語 コマンドライン Doxygen との連携 Doxygen 連携用スクリプト その他のツールとの連携 オンラインデモ PlantUML とは 最近、プログラムの設計書などで UML を使うのが浸透してきていますが、 この UML を書くのはわりと面倒です。 CASE ツール, Doxygen などでは、クラス図を自動生成してくれますが、 ユースケース図やシーケンス図は自分

  • テストコードがないコードだけが技術的負債じゃないよ - methaneのブログ

    私は「レガシーコード改善ガイド」を読んだことがないのですが、世間的に「テストコードがないコードが技術的負債」という認識が広まっているようです。 レガシーコード改善ガイドを批判するつもりは全くありませんが、たんにそのの中で使われている「レガシーコード」の定義に一致する物だけが技術的負債だという考えには反対します。 技術的負債とは、将来必要とされるメンテナンスコストの期待値だと思います。全てのコードは、メンテナンスを放棄するまでは技術的負債です。一方、メンテナンスコストを差し引いた上でそのコードが将来生み出す利益の期待値が、そのコードの資産価値だと思います。テストコードがないコードでも、利益を出すなら正の資産になります。 もちろん、資産価値をより大きくするために、技術的負債を減らすことは良いことです。技術的負債を下げる=メンテナンスコストを下げることで、テストはその有力な手段の一つです。他に

    テストコードがないコードだけが技術的負債じゃないよ - methaneのブログ
  • プログラマーは皆、常に秘密や嘘を抱えている - totopon114689の日記

    プログラマーは皆、常に秘密や嘘を抱えている。 これは間違いない。 基的には誰にも話さないが、 (家族や友人などプログラムを知っていない人間に話しても分からない、という事もある) プログラマー同士の飲みの席などで、過去の笑い話として酒の肴になる事はある。 秘密や嘘の傾向には幾つかのパターンがある。 1) 仕様があいまいな場合の適当なコーディング 仕様があいまいな機能を実装する場合、想定していたものよりもプログラム量が膨大になる事はよくある。 また、細かいパターンや想定外のケースに対し、どのようにプログラム的対処を行うべきか? 洗い出しているとキリがない場合もある。 仮に事前に洗い出していたとしても、 「ケース自体は洗い出せているが、具体的にどのようなエラーメッセージを表示すべきか?」 などといった、その先がまたあいまいになっている場合もある。 このような場合、来であれば決裁権のある人間に

    プログラマーは皆、常に秘密や嘘を抱えている - totopon114689の日記
    gabari
    gabari 2013/05/24
    胃が痛い…
  • Installing the Android SDK | Android Developers

    Get started Start by creating your first app. Go deeper with our training courses or explore app development on your own.

    Installing the Android SDK | Android Developers
  • Qt Centre Forum

  • disabeling unused parameter warnings

  • QTabWidget まとめ - opamp_sandoの日記 ...でいいよね

    OpenTagMemoを制作するに当たって利用したQTabWidgetの機能の使い方を簡単にまとめて見る。 QTabWidgetもwidgetのひとつだから通常のQLabeなどのようにLayoutに登録できる。ということでQTabWidgetを使う場合はQWidgetなどのサブクラス内にメンバとして宣言してやってコンストラクタで初期化する。 初期化は次のような感じtab = new QTabWidget();こんな感じで特に引数などはいらない。QTabWidgetのポインタ変数のtabを初期化できた。次にこれにWidgetを登録する。 例えば簡単な例として2つの異なるQLabelを登録するlabela = new QLabel(tr("tab 1")); labelb = new QLabel(tr("tab 2"));//こんな具合に2つともコンストラクタ内で初期化したとして tab->