這幾天看了一些設計方面的文章,有些人提到正交這個詞,恕我孤陋寡聞,之前對它沒什麼印象,感覺大概是一個數學詞語。
專門查了下,正交這個詞還真是從數學來的,大概意思是兩個向量的内積為零,映射到幾何上就是說兩條直線相交成直角。這種情況下,沿着其中一條線移動的點在另一條線上的投影位置永遠不變。如果說正交代表完全不相關,相對的平行就代表完全相關,而處于平行和正交之間的,就代表部分相關,此時通過它們的夾角來表示它們的相關程度。
關于數學上的正交就解釋到這裡,再看這個概念拓展到計算機技術上。在計算機技術中,正交就是兩個或多個東西相互獨立,沒有交叉,改變其中一個不會影響另一個,其中一個也不能對另一個進行任何一點替代。比如if和for就是正交的。
然後這個東西有什麼現實意義呢?
我們都知道世界是紛繁蕪雜的,小到搞清楚女朋友的心思,大到分析世界局勢,都不是那麼容易的事。放到咱們軟件開發上,就是怎麼搞清楚用戶的需求,怎麼設計出結構優良的系統。
正交這一理念,可以應用在分析需求的時候。我們嘗試對業務需求進行分類,然後看這些分類之間有無交集,有則重新分類,如此反複,直到他們之間形成相互獨立的幾個概念,可能是數個詞語,這些詞語之間沒有任何包含關系,則說明需求的歸納沒有問題,它們之間是正交的。比如我們将一個電商系統的需求分類為商品管理、訂單管理、賬戶管理等幾個方面。
進一步,再到子系統的劃分、模塊的劃分、類和函數的設計上同樣适用,這個模塊和另一個模塊的邊界是不是清晰,這個類和另一個類的職責有沒有交叉,這個函數代表的業務含義有沒有含糊不清,要不要進一步拆解或者重新組合,就是看他們是否正交,正交的就是好的,不正交就是設計的有問題,需要重新審視、重新設計。
最後,符合正交的設計不就是符合低耦合高内聚的設計嗎?!頗有異曲同工之妙。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!