Skip to content

Instantly share code, notes, and snippets.

@sunaot
sunaot / gist:613106
Last active April 28, 2020 00:30
バグを生まないプログラミングのために

話しをしたいポイントは3つ。

  • 条件分岐を避けましょう
  • 一時変数の使い方に注意しましょう
  • 状態の使い方に気を使いましょう

これを徹底することで、バグの入り込む余地を最小限に保つプログラミングをしましょう。

条件分岐を避けましょう

@sunaot
sunaot / gist:613111
Created October 6, 2010 10:00
凝集性

凝集性 (cohesion)

課題

  • ルーチンの作り方に指針がない。
  • どんな風にルーチンを構成するとよいルーチンになるのかがわからない。
  • 抽象化という単語は知っているが、抽象化された状態がどんな状態なのかわからない。
@sunaot
sunaot / gist:613113
Created October 6, 2010 10:01
結合性

結合性 (coupling)

課題

凝集性を誤解し、とにかくひとつのルーチンになんでも多くのことを詰めこもうとする。さらに詰めこんだため、ルーチンとルーチンの間で膨大で複雑な引数を介してデータ構造を共有しようとする。

解決策

@sunaot
sunaot / gist:613117
Created October 6, 2010 10:03
手間と複雑さとの戦いについて

手間と複雑さとの戦いについて。

プログラムは処理を機械の手続きにあわせて実装するものでした。でも、そうすると人間が制御可能な複雑さを超えてしまいます。制御不能になるということは、つまりバグが入るということです。そこで、機械には少しがんばってもらって、その分人間が理解可能なレベルまで複雑さを落とすためのテクニックが生まれてきました。

そのステップを追ってみます(厳密には概念の誕生ははるかに古いものなどもあります。実際に用いられるようになってきた歴史をプログラム改善の流れと結びつけて並び替えてあります)。

手続きの抽象化。

抽象化が進んだとき、引数の多段受け渡しが発生する。

@sunaot
sunaot / gist:625336
Created October 14, 2010 01:13
直交性と DRY

直交性と DRY

「達人プログラマー」からの抜粋。

直交性とは

コンピューティングの分野では、ある種の独立性、あるいは分離性を表しています。 2つ以上のものごとで、片方を変更しても他方に影響を与えない場合、それらを直交している と呼ぶわけです。うまく設計されたシステムでは、データベースのコードはユーザー・ インタフェースと直交しています。つまりデータベースに影響を与えることなく インタフェースを変更したり、インタフェースを変更することなくデータベースを交換できたり するのです。

見積りとターゲットとコミットメントと計画

見積りの目的は何らかの判断をする際に参考にするのに必要な情報を必要な精度で提供すること。

いろいろの見積り

  • 工数
  • スケジュール
@sunaot
sunaot / gist:946062
Last active June 23, 2022 00:07
DB 設計勉強会 / タワーズクエスト社 和田省二さんを先生にむかえた勉強会のメモ。文責は sunaot です。

DB設計勉強会

全体のテーマ

データモデリング

  • データと情報
  • エンティティとリレーションシップ
  • リソースエンティティとイベントエンティティ
  • リレーションシップと多重度(カージナリティ)
  • PK と AK と FK
@sunaot
sunaot / gist:946113
Last active June 12, 2019 10:28
和田省二さんの SQL 講座のメモ書き。文責は sunaot

SQL 講座

SQL

  • SELECT
  • FROM
  • WHERE
  • GROUP BY 句
  • HAVING
  • WINDOW
@sunaot
sunaot / js_lesson.html
Created June 23, 2011 10:41
text for JavaScript lesson class.
<html>
<head>
</head>
<body>
<form id="input">
<textarea id="list" rows="20" cols="30"></textarea>
<input type="button" value="run" onclick="quoteNumbers()">
</form>
<pre id="result">
</pre>
@sunaot
sunaot / gist:1042490
Created June 23, 2011 13:01
Programming Primer in JavaScript

ここに書いていく。

プログラミング入門

  • なぜ JavaScript を学ぶのか ** 環境構築がいらない ** 言語として、利用領域としての将来性がある *** ブラウザはもちろんクライアントサイドは独壇場で一人勝ち *** 関数型プログラミングの要素 *** 関数がファーストクラスオブジェクト