-
1 # 小陳說遊
-
2 # 煙花時光
關注極迭代,和小夥伴一起看↗↗↗
對於程式設計師而言,兩者都很重要,但兩者的側重各有不同演算法是為了解決某個具體的問題。
設計模式是為了最佳化系統的程式碼結構,使待設計的系統可維護性、可擴充套件性變得更好。
瞭解了這一點,我們就知道,如果只注重演算法的話,即使程式設計師能夠做出很強的功能,也會由於它的可擴充套件性較差而變得非常難以維護。
而同樣反之,如果程式設計師只是用設計模式,那麼也會發現很多時候能夠開發出一個結構優良的系統,但是因為某一些具體演算法無法突破,而無法得到想要的效果。
打基礎的階段可以從演算法開始,更能夠容易理解機器是如何進行計算的,建立程式思維。
對於企業而言,設計模式往往比演算法更重要這是因為,企業開發是一種團隊型的活動,往往需要花費很長的時間,甚至數年,才能夠得到一個完整和適用的系統,那麼如果一個系統沒有經過良好的設計,想要進行維護都是非常困難的,甚至不得不推倒重來。
而對於某一些專項的演算法,是可以透過技術攻關或者第三方的,諮詢服務,來獲得解決的,
對於程式設計的小夥伴而言,如果你寫出的程式碼經常會被別人批評,其他人想要修改你的功能都抱怨無比,那麼大家心裡面可能也會覺得不好受。
設計模式在Java中,一共總結了常用的23種設計模式,這些經典的設計模式都是值得仔細閱讀和深入揣摩的。
設計模式的精髓就在於面向物件和抽象,對於介面和抽象類的理解,就變得尤為重要,很多初學者,覺得設計模式很難,就是因為基礎的封裝和解耦合概念不是特別清晰。
在設計模式中,代理模式與策略模式,這兩個尤為重要,很多其他模式都是這兩個模式的變形。
演算法演算法往往和資料結構是相關的,好的演算法並不在於用到了什麼樣酷炫的語言特性,或者程式碼一定極短。 能夠用最小的時間,或者最少的空間花費,來解決某一個具體的問題,就是好的演算法。
演算法也是需要進行不斷的最佳化的,對演算法不斷的迭代,就能夠大幅度的減少機器的計算時間和儲存消費的資源,就能夠在有限的資源下提供更多的更強的服務。
平衡過度的設計與過度的最佳化演算法都是不可取的,因為系統往往是有交付時限的,而且人力資源有限,我們需要根據實際的業務和系統真實情況進行平衡。
一般而言,系統設計和演算法能夠預估滿足五年左右的需求增長即可。一個普通系統的生命週期往往在三到五年左右,超過這一時間會由於新的業務需求或新技術的提出,而有升級換代的需要。
-
3 # IT人劉俊明
要明確設計模式和演算法哪個更重要,首先要清楚設計模式和演算法的作用,對程式設計師來說設計模式和演算法都是一定要掌握的內容。下面就給大家介紹一下設計模式和演算法的由來以及應用價值,主要從應用的角度出發(非學術角度)。
設計模式設計模式這個概念最早是由建築設計領域的著名大師克里斯托弗.亞歷山大在上世紀70年代提出的,其目的是總結現存成功建築物的特點,為年輕的建築師提供快速成長的途徑。在上世紀90年代設計模式被GOF(一個小組織)引入到軟體工程領域,並隨後得到廣泛的關注和使用。
簡答的說設計模式是經典解決方案,是很多工程師經驗的總結,是實戰論。設計模式不是新方案,但一定是可靠的解決方案,是從實踐中總結出來的經典方案。所以,作為年輕的程式設計師,一定要認真學習設計模式,設計模式提供了一個快速成長的途徑。對經驗豐富的程式設計師來說,各種模式已經使用的很熟練了,並不需要強調模式的作用和價值了。
軟體設計模式分為三個大的型別共23種,有建立型模式、結構型模式和行為型模式,每個大的型別下面又細分成不同的具體型別(關於設計模式的細節可以參考我後面的文章)。
演算法簡答的說演算法就是解決問題的方法。軟體設計的核心問題就是演算法,所以對程式設計師來說掌握演算法就是掌握了問題的解決辦法。通常解決問題的第一步就是進行演算法設計,只有確定了演算法才能進行程式設計,程式設計就是實現演算法的過程。
通常演算法有五個特徵,分別是有窮性、確切性、輸入項、輸出項、可行性,而評價一個演算法主要從時間複雜度和空間複雜度兩方面來考慮。
無論是做人工智慧、大資料、雲計算還是區塊鏈,演算法都是核心。所以對程式設計師來說掌握演算法的實現是非常重要的,各種演算法的學習也是一名程式設計師的必經之路。
重要程度按階段劃分
設計模式和演算法都非常重要,在程式設計師的初期階段,演算法要比較重要,因為了解演算法才能實現演算法進而完成功能實現。
在程式設計師中期模式比較重要,因為模式關乎專案整體的穩定性和可用性。
回覆列表
不知道題主工作幾年了,我也才幹這一行將近倆年,就我個人的認知來看,演算法在前期是比較重要的。因為前期工作大多是完成業務需求,著重解決問題的高效和有效性。