程式-語言-架構師-思想

来源:http://www.cnblogs.com/kingofkai/archive/2016/08/28/5814736.html
-Advertisement-
Play Games

程式 程式的本質是對現實生活的建模,反映真實世界。程式是對現實的抽象。那我們拿現實與程式對比著看,在現實生活,最重要的是處理人與人之間的關係,處理好人與人之間的關係,生活不會太難,而反映到程式是,在程式里最重要,最關鍵是處理類與類之間的關係,處理不好類與類之間的關係,到後期,一個項目將會分崩離析。在 ...


程式

      程式的本質是對現實生活的建模,反映真實世界。程式是對現實的抽象。那我們拿現實與程式對比著看,在現實生活,最重要的是處理人與人之間的關係,處理好人與人之間的關係,生活不會太難,而反映到程式是,在程式里最重要,最關鍵是處理類與類之間的關係,處理不好類與類之間的關係,到後期,一個項目將會分崩離析。在程式中有個分析關註點思想,也就是MVC思想。其實在現實生活早有體現,不能這麼說,感覺程式脫離了現實,應該是現實早有體現,程式將其抽象出來,起了個名字叫MVC。舉個例子,比如說一個公司,從上至下,總裁,經理,項目經理,程式員。比如總裁想要做一款APP了,他只會對經理說,去,我要個APP,他不會管你咋做,他只要結果。經理對項目經理說,去,我要做個APP,項目經理負責進度,讓程式員做個APP。這是真實生活,其實程式世界也是如此,這才是真正的面向對象思想。現在說程式,比如,老師有個完成一項很複雜功能的題,我全部寫到一個main()函數中去了,這是其實就是面向過程思想。而我們需要建一些類來協同完成這些工作,但是類建哪些呢,我不清楚啊,這就是真正的面向對象編程,這是真正提升水平的一個點。只有思想層次的提高,才是升華。

      說到底,面向對象編程就是處理類與類之間的關係。

語言

      說到程式,不得不說一說,程式設計語言,我不清楚語言在大家心裡什麼地位,反正你如果經常看博客啦,就會看出幾大派系之爭,這裡僅限於服務端語言,其它我也不懂,.NET PHP Java Node.js Python,每大派系都說自己是最好的語言,尤其是PHP,不清楚為啥,每次網上搜資料時,下麵總有幾個評論,PHP是世界上最好的語言,也是讓我很無語。拿出個有意思的事和大家分享一下,我當初學C#的時候,看到C#已死等等各種批評C#的文章,嚇得我不清,當時一度想學安卓去,後來我學PHP的時候,又看到了一下PHP只能做些小項目,掙不了大錢的文章。到現在學習Java,博客也有一些說Java存在這麼多年,已經老舊了,遲早會被Python Node.js取代,幸虧我承受能力強,要不然這樣也頂不住啊。好了,說了這麼多,我對語言的看法是工具。既然是工具,就有它最適合的方面。只有在最合適的方面使用工具,工具才是最完美的。反映到現實世界是,一群開車上班的人,說,看,轎車是世界上最棒的工具,而另一群飛行員說,看,飛機是世界上最棒的工具。語言本來不比爭來爭去的,在最適合的地方使用它,那它就是最好的語言。

      說到底,語言這玩意就是個工具而已,在最適合的地方使用它就好了。

架構師

      在程式世界中,有個稱謂讓所有程式員心儀神往,那就是架構師,一個程式世界中的老大,掌握著一個程式世界中所有對象的生殺大權。而普通程式員則在他定義的規則下,補充著這個世界。所以,下麵我要說的是,架構師和普通程式員。拿我自身舉例子,我曾經做.NET PHP項目的時候,就是我老師,他當然是架構師啦,我,普通程式員,這麼說,這個項目離了我照樣如期進行,而這個項目離了我老師,就是架構師就會崩潰。這就是兩者的區別。不知道大家聽過一句話沒有,那就是開發者做項目幾年之後就是架構師了,我只想說去他媽媽的(此處禁言),普通程式員一直在架構師的框架下工作,面向對象思想根本建立不起來,除非你主動學習框架,嘗試打破這個架構師建立的規則,否則你會一直在這個規則下生存,做著70%的工作,拿著30%的工資。普通程式員其實一直鍛煉的是面向過程思想,在架構師定義好的對象世界中,工作,這就是普通程式員為啥成不了架構師,因為他沒有架構師的面向對象的思想。這是根本原因。其實,面向對象思想沒那麼簡單。在我看來,架構師深度理解面向對象思想,而普通程式員深度理解面向過程思想,就這樣。

      我希望有一天自己不再是別人框架下的補充者,有一天自己成為一個獨當一面的架構師,自己定義這個世界的規則。

思想

      因為對架構師的嚮往,對面向對象思想的嚮往,我一度認為面向過程是舊的思想,註定要被面向對象替代,我發現自己錯了,其實面向對象思想是對面向過程思想的補充,面向對象可離不開面向過程,面向過程可以離開面向對象。當前主流的思想有,面向過程思想,面向對象思想,面向方面思想。多層次看程式世界,最底層其實還是面向過程編程,從這個點處理到另一個點,現實生活做事情也是有個順序的。其次就是面向對象思想,考慮的層次更高級一些。而發現有一些面向對象無法處理的事情,比如許可權驗證,日誌管理,所以又出來了面向方面思想。

      而我理解的思想體系是,面向對象思想是對面向過程思想的補充,面向方面思想是對面向對象思想的補充,就這樣。

 

      PS:

           1 吝嗇定律:當一件事你發現它的本質(即最少),那就能發揮它最大的作用。

           2 欲戴王冠,必承其重。

 

                                                                                                                                                                                     2016-08-28 12:24:46

                                                                                                                                                                                     一個欲戴王冠的人

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 應對場景: 相對於開發在一臺電腦上運行的單個程式,如何讓一個應用中的多個獨立的程式協同工作是一件非常困難的事情。開發這樣的應用,很容易讓很多開發人員陷入如何使多個程式協同工作的邏輯中,最後導致沒有時間更好地思考和實現他們自己的應用程式邏輯;又或者開發人員對系統邏輯關註不夠,只是用很少的時間開發了一 ...
  • 文件操作 1.能調用方法的一定是對象,比如數值、字元串、列表、元組、字典,甚至文件也是對象,Python中一切皆為對象。 2.三種基本的文件操作模式:r(only-read)、w(only-write)、a(append) 對文件進行操作的流程:第一,建立文件對象。第二,調用文件方法進行操作。第三, ...
  • 使用Maven管理項目,pom文件為: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="h ...
  • 其他鏈接:http://blog.csdn.net/jinwufeiyang/article/details/52338268 如何將我們網站的其它內容(如菜單、標題等)做國際化處理呢?這就是本篇要將的內容—>國際化。 在項目的spring.xml文件添加的內容如下 [html] view plai ...
  • 時隔 15.6 個月,終於發佈了一個新版本 v1.1.0。 新版本除了包含了這些日子收集到的無數的小改進及 bug fixes,也有一些新功能。本文嘗試從使用者的角度,簡單介紹一下這些功能和沿由。 ...
  • 在學習python之前,我也學習過C ,C++ ,Java ,PHP ,javascript,前端也學習過。但是在學習Python的這段時間里,多多少少也感覺到Python在語法方面的不同和特殊性。 今天,我們就來聊聊Python都有哪些語法引起過我們的好奇。 1.註釋方面,一般C , Java , ...
  • A集成代碼生成器 [正反雙向(單表、主表、明細表、樹形表,開發利器)+快速構建表單; freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁面、建表sql腳本,處理類,service等完整模塊B 集成阿裡巴巴資料庫連接池druid; 資料庫連接池 阿裡巴巴的 druid。Druid在 ...
  • (一)Hibernate入門 通俗的話來說:Hibernate是用於面向對象操控資料庫,對JDBC進行輕量級封裝。(在java世界中傳統的來說是JDBC訪問資料庫。) 1)Hibernate定性:對象關係映射框架。(底層依舊是JDBC) 2)Hibernate框架的結構圖 解析:Java Appli ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...