Skip to content

Instantly share code, notes, and snippets.

Sunao Tanabe sunaot

Block or report user

Report or block sunaot

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@sunaot
sunaot / gist:613106
Last active Apr 25, 2018
バグを生まないプログラミングのために
View gist:613106

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

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

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

条件分岐を避けましょう

View gist:613111

凝集性 (cohesion)

課題

  • ルーチンの作り方に指針がない。
  • どんな風にルーチンを構成するとよいルーチンになるのかがわからない。
  • 抽象化という単語は知っているが、抽象化された状態がどんな状態なのかわからない。
View gist:613113

結合性 (coupling)

課題

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

解決策

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

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

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

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

手続きの抽象化。

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

@sunaot
sunaot / gist:625336
Created Oct 14, 2010
直交性と DRY
View gist:625336

直交性と DRY

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

直交性とは

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

View gist:639914

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

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

いろいろの見積り

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

DB設計勉強会

全体のテーマ

データモデリング

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

SQL 講座

SQL

  • SELECT
  • FROM
  • WHERE
  • GROUP BY 句
  • HAVING
  • WINDOW
@sunaot
sunaot / js_lesson.html
Created Jun 23, 2011
text for JavaScript lesson class.
View js_lesson.html
<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 Jun 23, 2011
Programming Primer in JavaScript
View gist:1042490

ここに書いていく。

プログラミング入門

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