日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象方法的优势简化软件开发的过程_软件开发技巧的途径

發布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象方法的优势简化软件开发的过程_软件开发技巧的途径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

軟件開發的復雜性每天都在增加。幾乎每年都會發布一個新的框架(例如AngularJS,ReactJS)和一個新的構建工具(例如Webpack,Rollup)。甚至每年都會發布新的JavaScript版本(ECMAScript 2015、2016和2017年即將發布)!

通常,在軟件開發的其他領域中也存在相同的情況。
例如移動應用程序。2年前,蘋果推出了一種新的編程語言Swift。iOS操作系統幾乎每年都會發布具有新API和功能的新版本。

這對軟件行業來說非常有用。但是對于我們軟件開發人員來說,這是很大的負擔。

不幸的是,人類的知識創造力令人印象深刻……但有限。您不能(也不應該)知道所有新框架和構建工具。

軟件開發人員可以做什么?解決方案是應用有效的學習策略:接受編程基礎知識。

編程基礎包括算法,數據結構和編程語言知識。

如果您想成為一名出色的軟件開發人員,毫無疑問,您應該不斷掌握趨勢技術(例如React,Redux和Angular)。同時,他們付出了相同的努力來定期學習基礎知識,例如算法,數據結構,編寫伸縮性原理和簡潔代碼。

本文是我對如何處理開發復雜性的看法。此外,您會發現開發人員的精通進度的有趣劃分。我將這些階段命名為上下顛倒的三角形,矩形和三角形。

1.概念

編程基礎的重要部分是算法。算法是對應該執行以獲得結果的操作的逐步說明。

使用編程語言將算法編碼到計算機中。Web開發人員通常使用JavaScript進行編碼,iOS開發人員通常使用Swift(或Objective-C)進行編碼。

您應該知道的常見算法類別:

  • 排序算法:冒泡排序,插入排序,快速排序等
  • 搜索算法:二分搜索,廣度優先搜索,深度優先搜索等
  • 最短路徑算法:Bellman-Ford算法,Dijkstra算法等
  • 數學算法:斐波那契數列,最大公除數,最小公倍數等

現有算法的數量令人印象深刻。這些算法中的許多算法都是軟件開發和聯網的基礎。

在學習算法時,我聽到的第一個原因是開發人員無需確切了解特定算法的工作原理。您可能認為所有現有算法都已實現,測試并包含在標準庫中。
或者您從來沒有在JavaScript中使用Bellman-Ford算法的案例。

如果您確定要成為一名成功的軟件開發人員,那么這種借口是錯誤的做法。要構建復雜且高質量的應用程序,您必須具有算法知識。

實際上,算法是在標準庫中實現的,開發人員無需手動編寫它們。但是,由于缺乏專業知識,開發人員無法查看何時使用特定算法很好地解決了問題。
存在具有算法的庫,但是開發人員在有用時根本看不到這種情況。

詳細學習算法是寶貴的經驗。學習和掌握它們可以培養解決難題的直覺。

強大的直覺是定義優秀的軟件開發人員的原因。當然還有經驗和紀律。

直覺是純金。

數據結構也是必不可少的方面。學習它們將教您如何正確表示應用程序中的信息。

正確選擇的數據結構具有巨大的好處。它使管理數據的代碼更易于編寫和維護。數據操作,存儲,查詢等操作更易于實現。

質量代碼由有效的算法和方便的數據結構組成。

2.初學者:上下顛倒的三角形

為了簡化表示,將編碼能力劃分為簡化方案:

  • 基礎知識:與算法,數據結構,計算機科學問題,應用程序設計原理(SOLID,KISS,DRY,SoC),可伸縮性相關的所有內容
  • 語言:與編程語言(JavaScript,Swift,Java),語法,運算符,變量,編譯器相關的所有內容
  • 框架:與框架(AngularJS,ReactJS,Cocoa Touch)和平臺(瀏覽器,NodeJS)相關的所有內容。

軟件開發精通的第一級是初學者,它由一個倒置的三角形表示。

每個程序員(包括我)都從這個級別開始。

初學者對特定的框架(例如ReactJS)感到非常興奮。他遵循了一些框架教程,并且具有不錯的理解水平。

此類開發人員的JavaScript知識對于使用ReactJS進行編程是必需的最低要求。他擅長定義變量,函數,ES2015模塊和ReactJS組件。

但是他有像JavaScript的更深層次的概念,問題href="https://dmitripavlutin.com/gentle-explanation-of-this-in-javascript/">是如何this關鍵字作品,原型繼承,提升和事件循環。

缺乏語言經驗會對JavaScript中的組件編碼方式產生負面影響。通常,黑客和變通方法僅用于使事情正常進行。

算法和數據結構的知識非常有限。
當應用程序的一部分可能受益于眾所周知的算法時,開發人員看不到這一點,便開始發明輪子。而且,發明的輪子通常質量低并且浪費時間。

最常用的數據結構是數組和純JavaScript對象。但僅此而已。

3.精通:矩形

下一個級別是熟練的開發人員,用矩形表示(我希望將自己歸于這個級別!)。

熟練的開發人員已經很好地掌握了ReactJS框架和JavaScript語言。他的代碼中的駭客數量很少。

熟練的開發人員可以看到某些數據結構或算法使代碼更加高效的情況。但是直到有限的水平。

例如,應用程序具有一個組件,該組件經常在具有很多元素的數組中進行搜索。如果很少更改數組,則開發人員認為對數組進行排序是合理的。并且當需要執行搜索操作時,請使用二進制搜索算法,在這種情況下,該算法非常有效。

在矩形情況下,開發人員能夠創建高質量的應用程序,但效率最高。

4.專家:三角形

上層是專家開發人員,他掌握了所有三個方向:基礎知識,語言和框架。他由一個具有堅實底數的三角形表示。

專業的開發人員能夠看到某些算法的效率,并在必要時應用它們。他從選擇正確的數據結構中受益,使數據操作變得簡單。

挑戰是從可用算法中選擇最適合具體情況的算法。這是獲得最大可能性能的平衡過程。

由于編程語言是一種表達算法思維的工具,因此開發人員所寫的語言無關緊要。專家可以使用多種語言:JavaScript和Ruby,或C ++和Java。

5.建議

趨勢框架甚至語言都遲早會消失。它們將被更好的工具所取代:這是進化的必然結果。您可以做的就是強調基礎知識。

當然,基礎知識很難學習。許多算法很難理解和記住。我的建議只是為了好玩:您可能會多次閱讀復雜的算法。考慮一下可以帶來特定數據結構的好處。挑戰自己,變得越來越好。

盡管基本面很困難,但還有一個令人愉悅的好處:它不會經常更改。從80甚至70年代開始并沒有創建任何重要的新算法或數據結構。一次又一次地學習它們,然后不時重復它們,那么您就很好了。

面試過程

像Google,Apple和Microsoft這樣的大型軟件公司都非常重視算法和數據結構。這些公司的采訪中包含許多計算機科學問題,白板編碼,平衡樹等。

我讀過許多帖子,批評這種方法,公司會查詢錯誤的技能。他們說開發人員在“現實世界”編程中不處理排序算法或平衡樹。
您可以輕松地擊敗這樣的論點:我從未遇到過精通算法和數據結構的程序員,然后聲稱這是浪費時間。此外,大多數人聲稱這些很重要。

我個人同意計算機科學面試問題。由于軟件開發行業發展如此迅速,因此公司需要具有扎實背景的開發人員。

一方面,這樣的開發者可以有效地解決復雜的問題。另一方面,他可以輕松適應新的語言和框架,以適應快速發展的行業。

最后,成為一名專業人員真的很高興。如果系統詢問您:“請使用Dijkstra的算法解決此問題[…]”。沒問題!拿粉筆,輕松解決問題,并給他們留下深刻的印象!

采取行動

成為主人沒有捷徑。使您變得更好的是學習和練習。

不斷學習和練習。

您可以同時向三個方向前進。基本原理,語言和框架同樣重要。JavaScript開發人員可以從以下內容開始:

  • 基礎知識:Steven S. Skiena的《算法設計手冊》
  • 語言:Kyle Simpson的《JavaScript入門》系列
  • 框架:React:啟動和運行 Stoyan Stefanov

在這些方向上鞏固自己的基礎之后,再上一個臺階:

  • 代碼的質量和可讀性: Robert C. Martin 編寫的干凈代碼(我最喜歡的書之一)
  • 面向對象的設計和可伸縮的代碼:設計模式:可重用的面向對象軟件的元素

原著作者:德米特里·帕夫魯汀

文章來源:國外

原著鏈接:

Dmitri Pavlutin Blog?dmitripavlutin.com

PS:原著文章內容為英文版本,建議使用360極速瀏覽器進行翻譯閱讀。

總結

以上是生活随笔為你收集整理的面向对象方法的优势简化软件开发的过程_软件开发技巧的途径的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。