銀河鉄道

直交性とは影響を与えない設計方法|Orthogonality

サムネイル
Orthogonality垂直な関係性
Orthogonality
– 直交性 –
垂直で交わらない
Wikipedia

垂直な線は、どこまでいっても交わらない

In computing, the term has come to signify a kind of independence or decoupling.
コンピューティングでは、この用語は一種の独立または分離を意味するようになりました。

pragmatic programmer

コンポーネントを独立させよう

Orthogonalityなコンポーネントにする

Orthogonalityにするための特徴

一つで独立して、自己完結できる

独立すると、他人からの影響を排除できる
– Eliminate Effects –

影響を排除する – Eliminate Effects Between Unrelated Things –

Orthogonalityの2つのメリット – two major benefits –

他人の影響がないと、仕事がはかどる

  1. increased productivity
    • 生産性が増える
  2. reduced risk
    • リスクが減る

1.生産性の向上

  1. It is easier to write relatively small, self-contained components than a single large block of code.
    • 一つの大型ブロックよりも、小さな自己完結型を書くほうが簡単
  2. An orthogonal approach also promotes reuse.
    • 再利用が促進できる
  3. You get more functionality per unit effort by combining orthogonal components. 
    • 直交コンポーネントの組み合わせで、さらに機能が作れる

書くのが簡単で、再利用できて、組み合わせもできる

即効の改善ができる
– an immediate improvement –

2.リスクの低減

  • When components are isolated from one another, you know that you can change one without having to worry about the rest.
    • 互いに分離されている場合、互いを心配せずに変更できる
  • you can be confident that you won’t cause problems that ripple through the entire system.
    • システム全体への波紋は広がらないという自信が持てる

何も心配しなくていい

これぞ、強力な味方
– a powerful way

直交システムを設計する – orthogonal systems

Sometimes these components are organized into layers, each providing a level of abstractionThis layered approach is a powerful way to design orthogonal systems. 
コンポーネントはレイヤーに編成され、それぞれが抽象化レベルを提供します。この階層化されたアプローチは、直交システムを設計する強力な方法です。

pragmatic programmer

階層化 – layered –

layer は、「層に分かれている」という意味
たとえば皮膚なら、表皮・真皮・皮下組織の3つの層に分かれている

  • 階層化
    • 小さな部品に分けること
    • 各部品は、独自の機能を持ち、他の部品と独立して動作できる

コンポーネントは、それぞれの層の中に配置される

抽象化レベル – a level of abstraction –

たとえば、「110円」が具体的な支払金額、
「本体価格 + 消費税」の式が抽象化

  • 抽象化レベル
    • 具体的な詳細を隠す度合い
    • 抽象化レベルが高いほど、見た目はシンプル

コンポーネントは、抽象化レベルを提供する

自分の役割だけを提供し、他人の仕事には口出さない

If I dramatically change the requirements behind a particular function, how many modules are affected? 
In an orthogonal system, the answer should be “one.’’
特定の機能の背後にある要件を劇的に変更すると、いくつのモジュールが影響を受けますか?
直交システムでは、答えは「1」であるべきです。

pragmatic programmer

だから設計は難しい

絶え間ないプロセス
– It’s a Continuous Process –

Orthogonality – 直交性 –
他人との関係は垂直に
影響は仕事の邪魔
Wikipedia

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧