たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

小さなブラックボックスを組み合わせて大きいシステムを造る

[caller/callee・ブラックボックス・interface] 小さなブラックボックスを組み合わせて大きいシステムを造る calleeが内部でcallerを操作するな、calleeは変数を返すだけにしろ(まさに関数型)

[ブラックボックス: 暗示的外部操作をしない] 暗示的に外部を操作した場合、エラー解析のためブラックボックスを開く必要がある  外部にある何を、どんな条件で、どのように変更するか開けないと (明示されていないために)わからないから  あけたらそれ、ブラックボックスちゃうやん

[引数によらない状態変化がもたらすデメリット] いつ変わるか調べるの大変 (怠惰に反する) X = "new"とかx.y = "new"とかf(X)とか書いてあったら、"x = || (x)"で検索かけられなくもない  関数のほう死ぬほどいやだけど 明示してあれば、引数によらんでも一緒か。関数理解は大前提だし  y = x, f(y)されたら引数型でも同じくらい手間がかかる

[ブラックボックス間の協調]  変数変換  イベント

[考慮すべき範囲] small is beautiful (UNIX) 基本的なモチベーション: 考慮範囲は小さいほうが脳みそ楽でうれしい (怠惰) 型不明オブジェクトを外部から受け入れる (引数、暗示的依存とわず) 場合、  ・オブジェクトがどうなっているか   ・property Xを持つか   ・処理中に外部から変更されるリスクはあるか  を考慮すべきである。すなわち外部を全て理解し考慮しないといけなくなる (つらい)  -> 外部interfaceの明示

[必要条件と十分条件を誤解させる言い方はさけよう]

calleeは何をするか

なんか呼ばれたので処理して返すよ
実装:

  • function call & return
  • event come & event emit
  • change detection by other program?
  • interface function call