by shigemk2

当面は技術的なことしか書かない

Coding Tips

SQLファイルのコメントアウト

Yusuke-Memo: SQLのソースでコメントアウトする 一行コメントアウト -- comment 複数行コメントアウト /* comment comment */ ハイフン3つだとダメだよ。やっちゃったけど。

HTMLを作成しつつ、CSSを書くための手順

HTMLを書くにあたっての大まかな注意 HTMLがあって、CSSがあたり、webページになる そのため、まずHTMLから書く。本来レイアウトはどうでもよくて、HTMLが本当に正しいものになっているかが重要である。 CSSのあたっていないHTMLを上から読んで意味が通じる…

リファクタリングのコツをば少々書いてみる

ここ最近ずっとリファクタリングばかりやっていたので、 リファクタリングの極意的なものを少し。 大前提 まず、どのような処理が行われているか、100%正確に把握すること。 これが出来ないと、リファクタリングをきちんと行うことが出来ない。 きちんと処理…

1行if文はなるたけ書かない

if文は1行で書けるのは皆さんご存じかと思いますが、

関数を返り値にしたほうがよいときもある

関数の返り値ってこういう風に書けるかもしれないけど、 function hoge($array) { if(is_array($array) { return true; } else { return false; } } こういう風に書いたほうが早いですよね。 function hoge($array) { return is_array($array); }

テストを書くときは

新機能をつけるときは、必ずテストコードも一緒にやる。流れとして、レッド→グリーン→リファクタリングをやること。 (テストファーストできればbetter)time関数などが使われている場合、テストの度に結果が変わってしまうので、 何かしらの対策を取ること。

ログを書きだす関数を書くときは

たとえばこんな風にログを書き出す関数があったとして、

同じことは同じように書く

クリアなコードの作り方: 同じことは同じように書く - ククログ(2012-07-18)たとえばこのようなコードがあったとして… (コードの中身は放っておいてください)

コードリーディングにおける静的解析と動的解析

動的解析 デバッガツールを使ってコンパイルしながらコードを読みとく。 実行を一時停止してその時点のコールスタック(関数の手続きの呼び出しチェインのこと)関数Aが関数Bを呼び出し、関数Bが関数Cを呼び出したときに関数C内で実行を一時停止すると、 A B C…

関数の抽象化について

関数の抽象化と言われてもイマイチよく分からないので、 とりあえず、 名前だけでどんな機能かイメージできる関数名かどうか 関数ヘッダだけを読んだだけでどんな構造になっているかイメージできるかどうか が重要だと思われる。コードを読まないと概要も構…

関数定義のときのエラーについて

関数定義の際、その関数がエラーを返すかどうかは「仕様」として予め決める。

関数の戻り値について

戻り値がbool以外のものが存在する関数は、 テストしにくいし、仕様通り動かないかもしれないし、 バグのもとなので、そういう設計は極力避けませう。メソッド化して抽象化するのは悪くないけども、 戻り値が判然としない関数を設計してバグが増えやすくなる…

コードリーディングについて

開発プロジェクトの大半は保守であり、 プロジェクトの期間が長くると、コードを書くのに使う時間と既存コードを理解するために使う時間が同程度になる。 10万行以上のコードを読むことなどザラであり、なぜ読むのに苦労したかを考える。コードリーディング…

ハードコーディング

ハードコードとは 【 hard code 】 〔 ハードコーディング 〕 - 意味/解説/説明/定義 : IT用語辞典特定の動作環境を決め打ちして、その動作環境で動作させることを前提とした処理や データをソースコードの中に書き込んでしまうプログラミング方式。通称決…

コードのコメントについて

コメントについてのメモ。構造や内容については、その言語が読める人なら誰でも解るものである。 そもそもコードを読んでる時点で当たり前の部分はクリアしている人のはずなのだから、 「何をしているコードか」は、不要なコメントである。あとコードを書い…

テストコードで要求される値について

テストコードを実行するときには関数に値を代入する必要がある場合があるけども、 その値は予測可能な値でなければならない。つまり、 乱数 日によって変化するコード などは、予測不可能な値なのでテストしづらくなるためあまり好ましくない。

HTML5をコーディングするときのいくつかのTips

headerとfooterについて 1つの文書にheaderとfooterはそれぞれ1つだけあればよい。 (headerとfooterが複数あっても文法上問題はないのだが) header, footerの中にdivやsectionで囲むのは問題ない。 sectionの外をdivで囲むのも問題ない。なお、文書のサマリ…

ダブルループにおけるbreak

continue - by shigemk2breakは、ループを強制終了させるおまじないだが、 2つのループの、内側のループでbreakさせたら、 外側のループのルーチンはどうなるのだろうか。

ビューを意識しすぎるコントローラーは作成してはいけない

タイトルそのままなのだが、 ビューを意識しすぎるコントローラーだと必然的に ビューの可読性と見た目が悪くなってしまうので、 あまりやるべきではない。

関数の親子関係

メソッドを呼び出すためのインターフェイス関数を親に、 インターフェイス関数に必要なメソッド、 そのメソッドの中で必要なメソッド、 さらにそのメソッドの中で必要なメソッド…と、親子での関数依存関係は存在してもよい。 ただし、doxygenなどを使って、…

引数チェック → リダイレクト or return のタイミング

引数チェックをして引数がおかしかったら リダイレクトなりreturnなりを返すタイミングは、 引数チェックの直後がよろしい。関数の最後とかに引数チェックをやったら、それまでの処理が無駄になりかねない。 また、phpとかでredirectをやるときは、redirect…

配列を作成するとき

配列を作成するときは、当たり前だが初期化を行う。 ただ、配列に値が入らなかったり、空の配列が返されたりすることを考慮して、以下のような 配列初期化関数を作成するとよい。 こうすることで、仮に配列…

private と public

全ての関数は、publicがデフォルトである。 つまりどこからでもアクセスが出来る。ただ、関数の依存関係(どの関数内でどの関数が呼び出されているか)は、 少なくシンプルなほうがよいので、 特定の関数を窓口のようにして、その窓口からその他の関数を呼び出…

メソッドを書く順番

_系のメソッドを書くときは、 _foo(); } function _foo() { // 処理 } 呼び出すメソッドの後にメソッドを追加する。

入力されるデータについて

入力されるデータには寛容にして、どのような値でも 入力できるようにする。だが自分の書き込みは厳密にし、データの品質保証はしっかりと行う。日本の大学ではなく、欧米の大学のように、 入学するのは難しくないが、卒業するのは難しくするべき。

カバレッジ

カバレッジとは 【 coverage 】 - 意味/解説/説明/定義 : IT用語辞典 ソフトウェア開発において、出来上がったプログラムのテストをする際に、 どの程度をテスト対象とする(ことができる)かを適用する範囲のこと。

アジャイルとウォーターフォール

ウォーターフォール 開発プロジェクトを時系列に、「要求定義」「外部設計(概要設計)」「内部設計(詳細設計)」「開発(プログラミング)」「テスト」「運用」などの作業工程(局面、フェーズ)に分割し、原則として前工程が完了しないと次工程に進まない…

オフセット値

あるデータの位置を、基準点からの差(距離)で表した値のこと。オフセットとは 【 offset 】 - 意味/解説/説明/定義 : IT用語辞典 より。

typo

ちょっとしたタイプミスのこと。

関数の引数と戻り値について

入力値をそのまま弄って出力すると、 入力値を再度使いたいときに不便なので、 引数と戻り値は別にする。