直交性とは影響を与えない設計方法|Orthogonality
記事更新日:2024-01-19

– 直交性 –
垂直で交わらない


垂直な線は、どこまでいっても交わらない
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 –

他人の影響がないと、仕事がはかどる
- increased productivity
- 生産性が増える
- reduced risk
- リスクが減る
1.生産性の向上
- It is easier to write relatively small, self-contained components than a single large block of code.
- 一つの大型ブロックよりも、小さな自己完結型を書くほうが簡単
- An orthogonal approach also promotes reuse.
- 再利用が促進できる
- 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 abstraction. This 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?
pragmatic programmer
In an orthogonal system, the answer should be “one.’’
特定の機能の背後にある要件を劇的に変更すると、いくつのモジュールが影響を受けますか?
直交システムでは、答えは「1」であるべきです。

だから設計は難しい

絶え間ないプロセス
– It’s a Continuous Process –
他人との関係は垂直に
影響は仕事の邪魔

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