はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

リファクタリング

コード改善 meetup #1に行ってきた@最高だった

先日、 コード改善 meetup という新しい勉強会が開催されたので行ってきた。 概要から漂う神イベントの臭い。 本勉強会は、チームでコードの改善を進めていくにあたって工夫している点をテーマに LT発表者によるお題のもと、参加者同士で対話を行う勉強会で…

【SQLアンチパターン】アプリケーションのコードでSELECT * (ワイルドカード)はやめよう

アプリケーションのコードで SELECT * (ワイルドカード)としてカラム名を省略するのは、アンチパターンです。 SQLアンチパターンという名書でも紹介されています。 18章 インプリシットカラム(暗黙の列) SELECT * がダメなのは、あくまでアプリケーション側…

Whyについてコメントを書きHowについてコメントを書かない

ソースコード中のコメントは、我々を助けてくれることもあれば毒になることもある。 よかれと思ってコメントをかいたことが、後からメンテナンスする人を苦しめることにもなる。 例えばコメントの情報が誤っていたり、わかりにくい表現でコメントされている…

JavaScriptを動的に組み合わせるべきではない

例えば、このようにPHPをJavaScriptで、動的に組み立てられているコードには問題点が2つある。 <script type="text/javascript"> var hoge = '<?php echo $hoge ?>'; </script> セキュリティ面 メンテナンス面 である。

リファクタリングコンテスト in Rubyに投稿してみた

ForkwellJobsで、リファクタリングコンテスト in Rubyというものが開催されています。 リファクタリングコンテスト in Ruby TOO あなたがリファクタリングしたコードの { Before → After } を投稿しよう! 今までにリファクタリングを行ったRubyのコードのBe…

PHPでStrategyパターンを実装してみた

GoFのデザインパターンの一つStrategyパターンをPHPで実装してみた。 Strategyとは「戦略」のことで、戦略とはアルゴリズムのことを指しています。 Strategyパターンは、アルゴリズム(振る舞い)をカプセル化し振る舞いの差替えや追加、削除をしやすくするも…

Adapterパターンでドメインレイヤと技術レイヤを分離する

ドメインを理解するために、ソースコードを読んでいて読みにくさを感じる瞬間の一つにドメインレイヤと技術レイヤの話が混じっている場合です。 ドメインとして関心があるのは、どんなデータを扱うのか?どういう振る舞いをするか?です。 技術レイヤの話は…

マーカーインターフェースを使った例外設計

マーカーインターフェースを使った例外設計をPHPで行います。 マーカーインターフェースは、実装を持たない空っぽのインターフェースです。 こんなやつ。

【リファクタリング】メソッドの引数に同じ変数のセットを何度も渡しているのならば、オブジェクトにしよう

今回は、リファクタリング(?)ネタ。 例えばこんなメソッドがあるとする。(PHPです) public function login($userLoginId, $userLoginPassword) { // 割愛 } public function passwordChange($userLoginId, $userLoginPassword) { // 割愛 } $userLoginId と …

PHPでDIをする

PHPでDI( Dependency Injection )をします。 DIとは、日本語訳で依存性の注入です。 依存性というのは、クラスから別のクラスを呼び出している状態です。 例えば、犬が鳴いたら猫も鳴く。 meow(); } } Dogクラスのbarksメソッドは、Catクラスに依存していま…