タグ

プログラミングに関するtakamR1のブックマーク (121)

  • ソースコードの品質向上のための効果的で効率的なコードレビュー

    ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発

    ソースコードの品質向上のための効果的で効率的なコードレビュー
    takamR1
    takamR1 2011/09/13
    クソース、uncode撲滅
  • 仕事でコードを書いていますがどうしても同期と比べて仕事が遅いです。早くコードを書くコツや短くまとめるコツなどがあれば教えてほしいです。あと普段どんなことを意識してコー��

    私は昔、趣味で作っていたアプリに機能を「追加」する度に、アプリケーション(実行ファイル)の総サイズを「減らす」、というのを繰り返していたよ。速度も同様に。 これによって「あるパターンはこう簡潔に直せる」というパターン知識が積み上がっていった気がするな。 さらに、それを実現する過程で、限界に見えた状況を打開するために色んな既存アルゴリズムを勉強して実際に使って身につけていくことになった。 ある問題があるときに、的確に適合するアルゴリズムや構成が発見(選択)できると、劇的に簡潔になることがある。そこにたどり着けるかどうか考えるのが楽しい。 あと、同じコードを何年も「育てる」という経験をすると、保守性の低いコードがどう困るかが身に染みるようになるよね。ソースコードは「人が読む物」でもあり、読みやすいというのも保守するなら重要なパラメータになる。これはコメントを書けという意味じゃない。コメ

    takamR1
    takamR1 2011/09/10
    組織の中にも、「動けばいい」コードを書く人と、「メンテする人ことを思って」コードを書く人が明確に分かれるよね。未来を想像することをやるかどうかの違いだと思う。
  • ソフトウェア工学とは何か

    ソフトウェア設計とは何か? (原文: What Is Software Design?) by Jack W. Reeves (c)C++ Journal - 1992 訳者まえがき この文書は,Jack W. Reeves 氏が1992年に C++ Journal に寄稿した記事の邦訳です。 記事では,オブジェクト指向プログラミング言語の代表として C++ を挙げていますが,これは記事が執筆された当時,一般的に利用可能なオブジェクト指向言語は C++ だけであったという事情があるためです。 今では C++ に加えて Java,Delphi,C# といったオブジェクト指向言語が利用可能となっていますが,そんな今でさえこの記事は古さを感じないものとなっており,ソフトウェア開発の質,現状を鋭くえぐるものとなっています。 邦訳の公開を許諾していただいた Jack W. Reeves 氏に,

  • 良いデベロッパになる為の13のTIPS

    読みやすいTIPSのリストが話題になるのは洋の東西を問わず見られる現象です。ハンガリーのブタペストのデベロッパ、Csaba Okronaさんが書いた記事が話題になっていました。さっそくその項目を見てみましょう。 レッスン1 全体像を理解せよ コーディング作業だけに囚われず、ビジネスやプロジェクト等の面からも理解する。 レッスン2 自分の時間を確保せよ 残業や早出は結局バグを招く。スピードは良いデザインと正しいアーキテクチャから生まれる。 レッスン3 間違った時は考え方を変えるチャンス 既存の技術で問題が遅くなってきたような場合は新しい技術へ移行する。ただし既存の技術がうまく行っている場合にただトレンドを追ったりはしない レッスン4 脳を鍛え続けろ 日々のタスク以外の鍛錬を行え。コードゴルフなどはよい例 レッスン5 人生を大事にする 特に重要。残業が続けば燃え尽きるのも早い。 レッスン6 集

    良いデベロッパになる為の13のTIPS
  • 「プログラミングへのこだわり」を方向づける - 設計者の発言

    業務システムの生産性や保守性を高めるための基は「コードを1行でも減らす」である。なぜなら、コーディングとこれにともなうテスティングこそが、開発作業の中でもっとも人手のかかる作業だからだ。個別案件においては、良いコードだろうが悪いコードだろうが少なければ少ないほどよい。 いっぽう、そんな方針と明らかにそぐわない人たちがいる。彼らはプログラミングそのものに強いこだわりを持っていて、より良いコードをより多く生み出すことに生きがいを感じる人たちだ。チャーミングな彼らの姿を個別案件の開発現場で見るたびに、私はキャスティングの失敗事例を見る思いがして切なくなる。 それは全国チェーンの外店の厨房に、新しい料理を生み出すことに情熱を覚える若者が働いているようなものだ。彼がどう工夫しても、全国一律の料理メニューを改変するのは難しいだろう。そんな才能あふれた若者には、部の企画部門で働いてもらったほうがい

    「プログラミングへのこだわり」を方向づける - 設計者の発言
  • いっしょに仕事をしたいプログラマ 5つの特徴 - たごもりすメモ

    ちょっとこんなことを考えるきっかけがあったので、ざっと書き出してみた。Webに公開されている情報からあるプログラマについて見てみたとき、どういう人ならいっしょに働いてもいいかについて。 ここに書く内容はソースコードの品質以前の問題についてのみにしてある。だからこの特徴を満たしていればどうということに直接なるわけではない。ただ、欠けているところがあれば、少なくとも自分はその人といっしょに仕事をしたいとは思わないだろう。 なお自分は現勤務先の採用活動にはかかわっておらず、このエントリの内容は勤務先の採用基準とは全く無関係です。 学生さんなどの場合にはまた話が違うと思います。 あと割と自分のことは棚に上げてます。「お前これできてねえじゃん」という部分については都度ご指摘をいただけますと大変ありがたく思います……。 1. その人が書いたソースコードが公開されている 日語で何を言われてもぶっちゃけ

    いっしょに仕事をしたいプログラマ 5つの特徴 - たごもりすメモ
  • 問題の多いソースコードは縦に延びる - rabbit2goのブログ

    ソフトウェアの問題点を調査していたら、一つの関数で1000行を超えるものに出くわしたことがある。そんな長い関数を作るからバグが生まれるのだよと思いつつ処理内容をチェックしてみるが、24インチのモニタに表示させても全体像がサッパリ分からない。仕方ないのでプリントアウトした13枚のA4ペーパーを床に並べ「このif文がここまで延びて...」等と赤ペンを片手に構成を解きほぐしていく。同レベルの処理が並んでいるだけならあまり問題ないのだけど、来異なるレイヤーで行うべき処理を1箇所に無理矢理押し込んでいるので解読する方も大変だ。 開発者は当にこの長い長い処理を理解してコードの改変を行っているのだろうか?という疑問はあるが、その前にそもそも何故こんな巨大なコードになっているのだろうか?Subversionのリポジトリから変更履歴を参照してみると、長年に渡って多くの人がコードの改変を行っており、誰か特

    問題の多いソースコードは縦に延びる - rabbit2goのブログ
  • それは説明責任の問題 - rabbit2goのブログ

    ソフトウェア開発者の仕事は、もちろん納期通りに要求されたソフトウェアを開発することだけど、それだけではない。成果物に対する説明責任も伴うはずだ。 どのようなアーキテクチャ、デザインパターンを採用しているのか? モジュール構成、クラス構成はどうなっているのか? 何をどのようにテストすれば良いのか? 性能面、機能面でのボトルネックはどこか? どのような障害が発生したのか? 次の派生開発時に改善すべき問題は何か? 通常、これらの情報は仕様書などの資料として残したり、申し送り事項という形で整理されるはずだ。もちろん、ソースコードを読めば分かるようなことはどうでも良くて、そのコードの背景にある設計思想とか、大量のコードの中に埋もれがちな考え方、役立った開発資料などの情報の方がずっと重要な意味を持っていたりする。こんな情報こそ整理しておく価値があると思う。 しかしながら、開発が終わって一安心するのか、

    それは説明責任の問題 - rabbit2goのブログ
    takamR1
    takamR1 2011/05/17
    自分で説明できないコードを1行たりとも書くな!
  • 品質は作り込むもの - rabbit2goのブログ

    ソフトウェア開発において、ありがちな品質対策の例。 テスト作業への人員追加 テスト期間の延長 テスト体制の見直し 経験的に言って、こんな素性の悪いソフトウェアに関わるとロクな事が無い。根的な作りが悪いソフトウェアを、いくらテストでフォローしようとしてもそれは無理というものだ。出血が続いているからと言って、傷口に絆創膏を貼り続けても何も解決しない。対処療法が効くのはほんのつかの間に過ぎないし、それでカバーできる範囲は極めて限られている。やるべきなのは出血が続いている根原因を突き止め、その出血を抑えるための施策を取ることだろう。テストによってマイナス10点がマイナス5点に上がったことを指して「品質が改善した」と主張するのは大きな誤解だし、そもそもいくらテストを続けても決してプラスの点にはなり得ない。スティーブ・マコネル氏がCode Completeの中で言っているように、テストは品質を改善

    品質は作り込むもの - rabbit2goのブログ
  • プログラマーは自分のコードを疑え - 南極の図書館

    若い頃にはよく陥る過ちだと思う。 最近やってしまったので自戒エントリ。 1.テストでバグ発見。 2.共通で使っている様々な計算をするクラスのメソッドから期待した値が戻ってこない。 3.どう考えてもこの(自分以外が作った)メソッドが業務上の例外を考慮してないだろ(履歴を見ると何度も問題があったモンスターメソッドだ)。 4.読み辛いながらも、そのメソッドのバグを探す。 5.どうもバグってないように見えるので、そのメソッドが使っている定数まで疑いだす(どんだけだよ。) 6.よく見たら私が書いたメソッドの呼び出し方が悪かった(結論) この歳になってこれはないよ。。。 でも「今更やってしまった」と実感できたのは良かった。 今後、バグを見つけたら、自分のコードを徹底的に疑う。 以下余談。 テストのコストが高いのがネックだと感じる。 数秒で終わるUTのコードがあればぐるぐるまわすんだけど、テストコードを

    プログラマーは自分のコードを疑え - 南極の図書館
    takamR1
    takamR1 2011/04/22
    「レガシーコードとは何ぞや」の実例
  • GitHub - google/styleguide: Style guides for Google-originated open-source projects

    Every major open-source project has its own style guide: a set of conventions (sometimes arbitrary) about how to write code for that project. It is much easier to understand a large codebase when all the code in it is in a consistent style. “Style” covers a lot of ground, from “use camelCase for variable names” to “never use global variables” to “never use exceptions.” This project (google/stylegu

    GitHub - google/styleguide: Style guides for Google-originated open-source projects
  • Schemes | Studio Styles

    public class Snippet : IThemeable { static void Main() { if("hello".Length < (43 ^ 2)) new Uri("http://there.com"); } } // "hamstu"

    takamR1
    takamR1 2011/02/24
    VisualStudioのエディタ配色設定ダウンロード
  • Review Board - Time for a code review upgrade

    Time for a code review upgrade Still on pull requests? See why organizations upgrade to Review Board: Code review, document review, and image review, all in one place Your code and data stays private, secure, and in your control (Review Board won't mine your data for AI training or other purposes) Works with what you use today (such as Git, Mercurial, Perforce, ClearCase, Cliosoft SOS, or TFS), an

    Review Board - Time for a code review upgrade
  • 見習いプログラマが読んだら、すぐにジョブレベルが上がる10冊 : ソースコードは飲み物です。

    2010-11-24 05:56:00 GMT 某所で『プログラマが読むべき10冊』というのが公開されてましたが、 どうみても中身が重いし、バックグラウンドの知識が必要なものが多いと感じたので、 即、血となり肉となるを独断と偏見でまとめてみました。 ジャンルごとの順番です。どれも読むべきだと思うので敢えて順番はつけません。

  • 『見習いプログラマ(中略)10冊』を書いた理由と、更に読んで欲しい5冊 : ソースコードは飲み物です。

    2010-11-28 04:26:00 GMT (※)このエントリは『見習いプログラマが読んだら、すぐにジョブレベルが上がる10冊』の補足になります。 (1)前回のエントリを書いた理由 (2)頂いたご意見に対して (3)更に読んで欲しい5冊 の順に書きたいと思います。 『戯言はいいからだけ教えれ』という方は下のほうの(3)へ (1)前回のエントリを書いた理由 僕がプログラミングを最初に学んだ頃(まだテレホーダイの時代) プログラミングを学ぶのにどのが良いかなんて情報がさっぱりありませんでした。 手当たり次第に買うしかありませんでした。 #当時は『大人のCGIスクリプト』を書名に惹かれて買い、ログファイルが飛ばないカウンタ・掲示板の作り方を見て感動していました。 #ログファイルを二重に用意し、更新日時が新しいほうを読み出し、内容を変更・追加し、更新日時が古いほう上書きするとい

  • 技術的負債: 柴田 芳樹 (Yoshiki Shibata)

    リーンソフトウェア開発と組織改革 作者: Mary and Tom Poppendieck 著、 依田光江 翻訳、 依田智夫 監訳出版社/メーカー: アスキー・メディアワークス発売日: 2010/10/09メディア: 単行(ソフトカバー) 技術的負債 成功するソフトウェアは変化している。成功するコードは変更を受け入れやすく書かれている。コードの変更をむずかしくするものはすべて技術的負債である。技術的負債は、ソフトウェアの所有コストを容赦なく引き上げ、いずれその精算を迫られたり、システムが破綻したりする。そんなことはすべてわかっている。けれども現実は・・・・ 誰が引き継いでも意図が明確に伝わるコードを書こうとせずに、不明瞭なコードがあっても受け入れてしまう。開発者は、特に経験の浅い開発者は、「クリーンなコード」の書き方を訓練されるべきだ。クリーンなコードとは、わかりやすいロジックに基づく、

    技術的負債: 柴田 芳樹 (Yoshiki Shibata)
  • Google C++スタイルガイド 日本語訳

    Text Drop 翻訳、プログラミング、写真、カメラなどについて書いてます。スタイルガイド/コーディング規約やチートシートなど、ちょっと便利なものを翻訳しています。 TEXTdropでは、C++プログラマーも利用できるパワフルな機能を搭載。C++のコードを書く際に行う手順や避けておきたい工程などを詳しく説明しています。コードスタイルラインの日語版では、日語訳やJ P Yへの換金もサポート。話題性があるオンラインカジノ 日円変換や入金の際のバグにも対応しています。統一性のあるコードを書くためのポイントや規約の種類を参考にする事ができます。

  • へ〜たのめも:Google のソフトウェア・エンジニアリング - livedoor Blog(ブログ)

    2007年06月07日 Google のソフトウェア・エンジニアリング Google Developer Day Tokyo の鵜飼さんのプレゼンより、「Googleエンジニアはどうやって開発しているのか?」 Google の研修 入社して最初の 3ヶ月は社(Mountain View)で研修 研修中は、メンターがついて「Google での開発の仕方」を学ぶ 内部ウェブ・サイトで社内共有ライブラリの使い方などを説明する動画があるので、それで自習 Googleプロジェクト・チーム 開発拠点は米国、スイス、オーストラリア、インド、日など 場所とプロジェクト・チームは関係なく、プロジェクト・チームが拠点をまたがることは普通。世界中の拠点全部合わせて、一つの Google エンジニアリング・チーム 開発はデザイン、コーディング、テスト、改善、デモの運用まで上流から下流まで同じチーム(同

  • 保守できないコードは「がらくた」: 柴田 芳樹 (Yoshiki Shibata)

    ソフトウェアエンジニアの責任に関して、『Taligent's Guide to Designing Programs: Well-Mannered Object-Oriented Design in C++』には次のように書かれています。 ソフトウェアエンジニアの責任は、何年も使われ続けるビジネス資産を作り出すことです。ソフトウェアエンジニアが、他人の書いたコードを理解することができない場合には、そのコードはあっさりと捨てられ、一から書き直されてもおかしくはないでしょう。残念なことに、このような書き直しは頻繁に起きています。コードを読みやすく保守性を高めることは、コードを正しく動作させることと同じくらい、あるいはそれ以上に重要です。正しく動作しないコードは、動作するように修正することができます。保守できないコードは、がらくたに過ぎません。資産としてのソフトウェアを開発することが重要ですが、

    保守できないコードは「がらくた」: 柴田 芳樹 (Yoshiki Shibata)
  • プログラマーの開発速度は「はまる」時間の長さで決まる : 小野和俊のブログ

    プログラミングを始めてから今日に至るまで、 様々なタイプのプログラマーと開発を共にしてきたが、 驚くべき速度で高い品質のソフトウェアを作り上げるプログラマーには、 一つ共通の特徴があるように思える。 それは、「はまる」時間が極端に短い、ということである。 風のプログラマー」を指向しており、開発速度を重要視している。 例えば平成14年未踏ソフトウェア創造事業「PICSY」では、 発表直前に知人でプロジェクトリーダーの鈴木健にレスキュー隊として呼ばれて 2,3日でGUI全般と、クライアント/サーバー通信部分の設計と実装を終わらせたのだが、 このときなどは、大体の要件を口頭で聞いた後は、 ほぼまったく手が止まらずコードを書き続ける感じで開発をしていた。 「はまる」時間の長さは開発速度に直結するわけだが、 プログラマーが「はまる」場合にはある程度の傾向があると思うので、 今日は「はまる」プログラマ

    プログラマーの開発速度は「はまる」時間の長さで決まる : 小野和俊のブログ
    takamR1
    takamR1 2009/05/18
    確かに「はまる」時間がない日は、あとで後悔するほど進捗がない。