タグ

refactoringに関するkiyo_hikoのブックマーク (12)

  • ミニマムリリースを意識していたらコードが肥大化していた話 - 弥生開発者ブログ

    Misoca開発チームの黒曜です。 仙台へ温泉旅行に行ったついでに、アースキャンディが一時期話題になっていた仙台市天文台に足を伸ばしてみました。 常設展示やプラネタリウムも良かったのですが、なにより口径1.3mのひとみ反射望遠鏡が大迫力で素晴らしかったです。 夜は温泉宿へ行ったので観望会には参加できなかったのが残念でした。 Misocaならリモートワークができるので、いっそ仙台に長期滞在してみようか… 受発注機能とミニマムリリース さて、Misocaでは最近、受発注に関する機能を強化しています。 このブログを書いている時点で見積書をメールで送信すると、サイト上で見積に関するやりとりや発注を行えるようになっています。 しかし、受発注に関する一番最初のリリースは「通常の見積書受信画面に発注ボタンが出て、発注通知を送れる」というだけの大変シンプルなものでした。 受発注に関する機能はなるべくミニマ

    ミニマムリリースを意識していたらコードが肥大化していた話 - 弥生開発者ブログ
  • マック公募バーガーの名称決定 - 共同通信 47NEWS

    マクドナルドは、同社初の名称公募ハンバーガーの商品名を「北のいいとこ牛っとバーガー」に決定と発表。

    マック公募バーガーの名称決定 - 共同通信 47NEWS
  • Feature Envy - Strategic Choice

    メソッドの浮気属性、操作の横恋慕どういうこと?メソッドが、自分の所属以外のクラスにやたらと関心を持っています。浮気対象はデータである場合が多く見られます。たとえば、何かの計算するために、他のオブジェクトのゲッターを大量に呼び出しているメソッドなどです。どうして?オブジェクトを使う意味は、データとデータに対する操作を1つのパッケージにまとめられることです。これを満たしていないプログラムは、変更に弱いプログラムになってしまいます。どうすれば?リファクタリングExtract Methodメソッドの抽出メソッドの抽出Move Methodメソッドの移動メソッドの移動Move Fieldフィールドの移動フィールドの移動ちなみにデザインパターンの中には、これらのルールを「確信犯的に」破っているものもあります。たとえばStrategyやVisitorなどです。ただし、これらはどれも「Divergent

    kiyo_hiko
    kiyo_hiko 2013/09/04
    GoFでは意図的に破っていることもあり、「基本となる考えは、変更に必要な部分を1か所にするということ」に着目してうまく設計したいということ
  • イマドキのIDE事情(114) Padre - Perlで書かれたPerl開発者向け軽量IDE

    Perl向け開発環境とPadre Perlのようなスクリプト言語の開発環境はテキストエディタを用いる開発者が多いのではないだろうか。Perl向けの開発環境としてはこれまでにもKomodoやEPIC(Eclipseプラグイン)などがあったが、動作が緩慢・不安定であるなどの理由で広く利用されているとは言い難いのが実情だ。 PadreはPerl向けの開発環境の1つで、IDEというよりはテキストエディタに近い。最大の特徴はPadre自身もPerlで書かれており、Perlによるプラグインで拡張可能という点だ。 PadreはGUIツールキットとしてwxWidgetを使用しており、様々なプラットフォーム上で動作する。Windows向けのインストーラ(Windows用のPerl実行環境であるStrawberry Perlも含まれている)が用意されているほか、UbuntuやFeroraといったLinuxディ

    イマドキのIDE事情(114) Padre - Perlで書かれたPerl開発者向け軽量IDE
    kiyo_hiko
    kiyo_hiko 2012/10/20
    「[Refactor]メニューから変数のリネーム」 これはポイント高い
  • リファクタリングのための回帰テストの書き方 - 千里霧中

    リファクタリングで定番のテスト活用方法として、変更前と変更後で挙動が変わってないことをテストコードで検証する、というものがある。違う用例で使われることもあるが、ここではそのテストを回帰テストと定義する。 そうしたリファクタリングでの回帰テストとしては、大きく以下の2パターンが挙げられる。 新しいコードの出力と古いコードの出力を比較するテストを書く。 満たすべき仕様を検証するテストを書く。そして古いコードと新しいコード両方がそれをパスすることを確認する。 今回は前者のテストをどう作っていくか、について扱っていきたいと思う。 簡単な場合 新しいコードの出力と、古いコードの出力を比較するテストというのは、満たすべき仕様を検証するテストよりも、一般的に実装が容易であることが多い。というのも、そのアプローチでは、テスト対象の仕様をよく考えなくとも、カバレッジなどを基準に網羅性を高めることで必要なテス

    リファクタリングのための回帰テストの書き方 - 千里霧中
    kiyo_hiko
    kiyo_hiko 2012/09/24
    リグレッションテストの考え方
  • Martin Fowler's Bliki in Japanese - 技術的負債

    http://www.martinfowler.com/bliki/TechnicalDebt.html システムに新しい機能を追加するとしよう。2つのやり方があるはずだ。ひとつは、早いけれど、ぐちゃぐちゃになるやり方(将来、変更が困難になることは分かっているよね)。もうひとつは、キレイな設計だけど、導入に時間のかかるやり方。 「技術的負債」とは、Ward Cunningham が作ったメタファーである。上記の問題について考える際に、この言葉が役に立つ。このメタファーを使うと、早いけれど汚い解決方法は(ファイナンスの負債と同じく)技術的な負債が発生する、ということになる。 通常の負債と同じく、こちらの負債も利子を払う必要がでてくる。 早いけれど汚い設計を選んだせいで、将来の開発において余分な労力をさかねばならなくなる、というわけだ。 これからずっと利子を払いつづけていくことも可能だし、 リ

    kiyo_hiko
    kiyo_hiko 2012/03/26
    コードを書くことは呪いだと思ってる 他人を必要以上に呪わないために真剣にコードを考えて、他人に呪われないようにスタイルの引き出しを増やしておく。
  • レガシープログラマさんと一緒にリファクタリングをする、の巻 - give IT a try

    前回のエントリではレガシープログラマの判断項目について、書きました。 その日、仕事でレガシープログラマさんの一人が書いたプログラムを一緒にリファクタリングしました。 レガシープログラマさんと言っても、おいらより年下の女性エンジニアです。 今回のエントリではそのやりとりについて書いてみたいと思います。 元のプログラムはどんなプログラム? そのプログラムは以下の判断項目に該当していました。 複数のデータをまとめて扱う際は毎回配列を使う。配列の上限数はありえなさそうな数を指定する(1000とか)。 基データ型(stringやint)と配列だけでデータ構造を表現しようとする。 クラスのフィールド変数をグローバル変数のように利用する。 言語はC#2.0で、CSVを読み込んでメールを送信するプログラムです。 ただし、同じFromとToの組み合わせに対しては一通のメール内の複数のコンテンツを含めて送信

    レガシープログラマさんと一緒にリファクタリングをする、の巻 - give IT a try
    kiyo_hiko
    kiyo_hiko 2012/02/28
    コードそのものは論点ではないと思うので剰り読んでなくて、意識のある人が、意識がなかったり、学習不足の人に教えるのは重要だと思う。まさに「先達はあらまほしきことなり」といった感じで、興味深い
  • BOOK Preview:Code Complete 第2版 24章 リファクタリング(2/6) - @IT

    Code Complete 第2版 上・下 ― 完全なプログラミングを目指して ― 第24章 リファクタリング マイクロソフトプレスの書籍紹介ページ 書籍情報のページ 2005/05/10 ■ case文を並行して修正しなければならない case文自体は悪くないが、同じようなcase文をプログラムの何か所かで変更していることに気付いたら、継承を使った方がよいかどうかを検討する。 ■ 一緒に使用する関連データがクラスにまとめられていない 同じデータのセットを繰り返し処理していることに気付いたら、それらの処理を専用のクラスとして独立させるべきかどうかを検討する。 ■ ルーチンがそのクラスの機能よりも別のクラスの機能を多く使用する ルーチンを別のクラスに移動して、元のクラスから呼び出すようにすべきだろう。 ■ 基データ型をオーバーロードしている 基データ型では、現実世界の無数のエンティティを

    kiyo_hiko
    kiyo_hiko 2012/02/22
    いいまとめ / 残念ながらトランプは仕事でよくよく拝見する。グローバル変数は1つにつきしっぺ1発食らわしてやりたい感じ
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    kiyo_hiko
    kiyo_hiko 2012/02/22
    PHPはよくわからんけど、グローバル変数が厄介なときに乗っ取ってしまう感じかしら
  • コードのクリーンアップ - 技術的負債の返済に役立つ 9 つの戦術

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 技術的負債の返済に役立つ 9 つの戦術 David Laribee MSDN Magazine の 2009 年 12 月号では、技術的負債に取り組むために、問題を特定して主張を展開するためのアドバイスを書きました。簡単に言えば、近い将来に問題になりそうな負債を特定することが重要だと信じています。コードベースのほとんど触れられない部分で、価値ある技術を確立しても、明日の生産性向上の実現には役立ちません。 また、負債返済の重要性について経営陣からお墨付きを得ることの重要性を理解し、同じ理由から手堅い主張を展開するための基ツールを用意してください。 では、利息の高い技術的負債を返済するうえで役立つ可能性がある戦

    コードのクリーンアップ - 技術的負債の返済に役立つ 9 つの戦術
    kiyo_hiko
    kiyo_hiko 2012/02/16
    「ファサードを作り、UI など上位の層は、層内の細かいクラスではなく、下位の層が提供するファサードに依存するようにします。この手法は、段階的に、チャンスをうかがいながら適用できます」
  • スラッシュドット ジャパン | リファクタリングは趣味の世界?

    Anonymous Coward曰く、"リファクタリング(マーチン ファウラー著 「リファクタリング」)とは「ソフトウェアの外部的振る舞いを保ったまま内部の構造を改善していく作業」のことで ここ最近、屋さんでよく見かけるようになった開発手法XP(eXtreme Programming)の重要な要素の一つです。しかしながら、「動いているコードはむやみにいじくるな」というのは、どの会社でも暗黙のルールになっており、会社の人にも言われることだと思われます。 当方は新人プログラマなのですが手が空いた時にリファクタリングをしていると「きれいなコードだとかそういうのはどうでもいいから一度テストしたコードに手を付けるなボケ。自己満足は一人でおねがい。」と言われる始末です。たしかにリファクタリングは闇雲に行うと何日もの手戻りにもなりえます。しかし、体系化したリファクタリングを行うことにより「将来の機能拡

    kiyo_hiko
    kiyo_hiko 2011/06/16
    「目前の事ばかり追いかけている状態でリファクタリングをしてしまうのは間違いだと思います。 アジャイルプロセスで回し、何度も遍歴を重ねられるような体制が全体的にできていなければただただ破綻するだけです」
  • Break Free of Code Deadlocks in Critical Sections Under Windows

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. Patterns in Practice Cohesion And Coupling Jeremy Miller Contents Decrease Coupling Increase Cohesion Eliminate Inappropriate Intimacy The Law of Demeter Tell, Don't Ask Say It Once and Only Once Wrapping Up Much of software design involves the ongoing q

    Break Free of Code Deadlocks in Critical Sections Under Windows
    kiyo_hiko
    kiyo_hiko 2010/12/01
    実装について小手先の妙な最適化(笑)テクニックで得意げに規約を決めているところは本当に多いけど、そんなことする前にこういうものを読んで、保守性の高いコードとは何か、プライドを捨てて勉強すべきだろう。
  • 1