關於程式設計,你知道嗎?
[作者袁永福,微軟MVP,從業13年,南京都昌資訊科技有限公司創始人,南京都昌公司專業從事於電子病歷編輯器、電子病歷文件技術、時間軸等國際化醫用UI層控制元件軟體產品。聯絡郵箱[email protected],網址www.dcwriter.cn]
如何開發出好HIT軟體是諸多HIT公司孜孜不斷的追求,軟體開發涉及方方面面,既有巨集觀戰略,也有中層執行,最後還要落實到微觀的程式設計。
我作為電子病歷編輯器的供應者,和行業內很多軟體公司有著諸多交流,接觸到大量的一執行緒序猿和許多實際程式碼,這些程式猿代表了HIT行業的真實生產力,這些程式碼代表了各家公司的真實水平。在和他們的交流中就萌發了這個主題:“關於程式設計,你知道嗎?”。
首先解釋下,這個主題中的“道”就是程式設計之道,“知道”就不是傳統的知道的意思,而是“知曉程式設計之道”的意思。
“道”這個詞高深莫測,我並沒有深入研究過,各人有各人的理解。我覺得簡簡單單,起源於實踐的就是我所理解的“道”。我本身就是道的一部分,萬事萬物都是道的一部分。吃飯喝水都有其中的道,程式設計也有道可講。每一行程式碼都是一條小道,許多小道整合在一起就是大道。結合我十多年的程式設計實踐,談談我所理解的程式設計之道。
任何道都講究天時地利人和,結合HIT軟體程式設計的現狀,談談這個天時地利人和。
天時,就是高高在上的大環境,淺顯的理解就是雲端計算、大資料、移動計算、居民健康檔案這些高大上的東西。
天空烏雲密佈,風起雲湧,但未必立即下雨,不過此時出門認為沒下雨就不帶傘,那是不講天時,逆天而行,必然會淋雨的。因此天時是任何位置上的任何人必須要考慮的。
地利,就是各人所處的小環境,比如在某個公司、某個醫院中。
人都有惰性,不敢改變懶於進步,只想固守現狀而不管天時。[袁永福原創]
燕雀可以在風雨來臨時依靠地利仍然可能固守在片瓦之下,而鴻鵠知天時、用地利,就可以遨遊於九天之上。
毫不客氣的說,HIT行業中存在著不少燕雀,還有一些是鴻鵠身燕雀心的,典型現象就是一些公司和醫院IT人士還在抱著PB/DELPHI等老技術生存著。一些用PB的也敢自稱雲端計算、大資料實在是忽悠人。醫院人士由於體制原因固守老技術那是可以理解的,自生自滅的公司不與時俱進那是有些不應該的,公司不光是老闆的賺錢工具,還擔負著手底下弟兄們生存發展的良心。
究竟要做燕雀還是鴻鵠,人各有志,各有各的幸福,不必勉強,不過想做鴻鵠的還是需要知天時、用地利,利用現有條件,拿出決心和執行力,順應天時做出改變。PB的衰亡是必然的,一些沒有斷決的公司將跟著它溫水煮青蛙式的陪葬。[袁永福原創]
人和,也是軟體的基礎。一些公司具有很好的商業執行力,但缺乏技術力量,導致專案沒有賺到該賺的錢,或者外包轉包。即使是大的老牌公司也會出現這種情況。沒有人和就沒有執行力,天時地利等等嚴重受損。
其實天時地利人和三者是相互影響的,沒有規定前後關係。所謂戰略和戰術那個在先也是和雞和蛋的問題那樣無解。
天時就是眾生的意志的加權和,地利是圈子裡的一群人的加權和,人和就是更小的一群人的加權和。歸根結底都是一群人的加權和,科技以人為本嘛。作為企業,三者都是要並行考慮的,比如對於一個公司,是誰當縣衛生局長可能比誰當國家主席更重要,因此沒有規定先後輕重,一切按需變化。
天時地利人和是高階程式設計道,而具體的編碼就是高階程式設計道,兩者那個更重要也是沒有規定的。
說到編碼,可以說我接觸的程式猿的編碼水平和公司大小無關。大公司在軟體開發流程管理上有些講究,但仍然能盛產垃圾程式碼。舉個例子,某公司的顯示對話方塊的C#程式碼大致如下:
frmDialog frm = new frmDialog();
frm.ShowDialog();
就這麼簡單的兩句話,非常的隨意,基本上就能導致記憶體洩露,經過指導修改如下:
using( frmDialog frm = new frmDialog())
{
frm.ShowDialog();
}
經過詢問,他們表示公司裡寫程式碼基本上不用這種using()語法結構,對此我表示無語。這就引出了程式碼質量的話題。
現在醫院的病歷質控,病歷書寫時間和文件完整性控制大家都能做了,但是病歷內容質控還正在發展中。[袁永福原創]
類似的,現在正規的軟體公司已經能使用SVN等工具進行原始碼版本管理,有部分公司也能參考CMMI的思想來進行文件控制了。不過對於程式碼的質量還是缺乏管理和干預的。
對於提高軟體穩定性方面,我在實踐中總結了幾個原則,包括:
1. 最小許可權原則。編碼時讓程式保持高風亮節,僅僅向系統申請操作所需的最小許可權。比如讀取檔案內容那就以只讀模式開啟,而不是可讀寫模式開啟。
2. 盡晚建立儘早釋放原則。對於檔案、資料庫連線、網路連線等等資源儘可能晚的例項化,儘可能早的釋放。即使稍微增加程式碼量也是值得的。
3. 儘早暴露錯誤原則。在軟體的開發和除錯階段,儘量少使用try-catch結構,儘可能的暴露出程式的錯誤,而不是一味的和諧來掩蓋錯誤,當然在釋出正式版本時還是需要和諧的。
4. 資源共享原則。在商業運作上,大家都想自己的系統獨佔客戶,但在編碼時要時刻記住電腦不是程式獨佔的,還執行著其他程式,不能霸道的佔據著系統資源,否則容易產生相容性問題,甚至會大水衝了龍王廟。
此外還有一些其他原則。時刻謹遵這些原則,就能較好的提高編碼質量,產生高質量的軟體。
不過發現大多數程式猿是不會自發的總結出這些原則的,只有經過培訓才能引起他們的關注,提升他們的思想。因此培訓是一個必要的提升程式設計質量的手段。
其實也沒有必要請外來人員培訓,正規的軟體公司大多有那麼幾個高手,給這些高手安排些時間做員工培訓工作就足以改進不少。[袁永福原創]
可以說程式猿寫出的每一行程式碼就蘊含著程式設計之道,寫出高質量的程式碼,滿足業務需求,這就是正道;寫出低質量的程式碼,不能滿足業務需求,這就是斜道。理解程式設計之道需要別人引導,更需要獨立思考摸索總結,既能沉浸於無邊碼海,又能跳出來高瞻遠矚,這才是較為理想的程式設計之道。達到這種程度需要長期而廣泛的程式設計實踐加上每天的勤于思考,真是人間正道是滄桑啊。
相關推薦
關於程式設計,你知道嗎?
[作者袁永福,微軟MVP,從業13年,南京都昌資訊科技有限公司創始人,南京都昌公司專業從事於電子病歷編輯器、電子病歷文件技術、時間軸等國際化醫用UI層控制元件軟體產品。聯絡郵箱[email protected],網址www.dcwriter.cn] 如何開發出好HIT軟體是諸多H
零基礎程式設計師自學程式設計的6種方法,你知道嗎?
隨著網際網路日趨迅猛,程式設計已經在我們生活當中無處不在了。眾所周知,程式設計師的工資都很不錯,於是越來越多的人,都想加入到程式設計的行業中來。那麼如何加入到程式設計師的行業當中? PHP從入門到放棄,C語言從入門到放棄,Java從入門到放棄,Python從入門到放棄... 在自學程式設計的
湯世聲: 普通人也可以變成記憶力超人,你知道嗎?
中國已經有幾十萬的孩子,他們可以 10分鐘記住100個隨機詞組! 10分鐘就能把100位隨機數字倒背如流! 30分鐘學會文科類記憶方法,從此天文地理,輕松拿下。 30分鐘學會思維導圖,從此不再思維受限 這不是天方夜譚!這更不是死記硬背!這只是一個科學的方法這只是一個開啟右腦潛能的鑰匙
Docker技術這些應用場景,你知道嗎?
docker docker應用場景 場景一:節省項目環境部署時間1.單項目打包每次部署項目到測試、生產等環境,都要部署一大堆依賴的軟件、工具,而且部署期間出現問題幾率很大,不經意就花費了很長時間。Docker主要理念就是環境打包部署,可在任意Docker Engine運行。前期我們只需要將每個項目環境
2018年的“核心期刊陷阱”已開啟,你知道嗎?2018年的“核心期刊陷阱”已開啟,你知道嗎?
無法 北大 發生 但是 社會 匹配 不清楚 都是 質量 2018年的“核心期刊陷阱”已開啟,你知道嗎? 北大核心期刊,也叫全國中文核心期刊。 北大核心期刊目錄所收錄的期刊並非終身制,而是三年評選一次,也就意味著三年之後,有些期刊可能就會因為質量問題而落選,同時,也會有新期
劃重點丨三大主要雲安全領域,你知道嗎?
挑戰 環境 權限 雲計算 image 最有 限制 國際 相關 面對信息安全的復雜性,制造商們難免不知所措。信息安全的***對制造企業來說後果不堪設想。截至目前也沒有任何跡象表明,信息安全的環境在短時間內會有很大改善或變得更加安全。 因此,越來越多的制造行業開始加強制定企業的
信息流投放的正確姿勢,你知道嗎?
動作 投放 引導 優惠 大氣 介紹 頻道 交通 tin 在信息流廣告不斷興起的現在,大部分廣告主都關懷起了信息流(Feeds)廣告,由於這種廣告方式能夠讓用戶不自覺地去承受廣告信息,乃至看完了整篇文章,都沒有以為這是一個廣告!得天獨厚的優勢讓信息流廣告越來越受歡迎。 現
零基礎大資料學習必學技術有哪幾種,你知道嗎?
現在大資料非常火爆,不管是阿里巴巴、百度、騰訊這樣的大企業,還是中小型的企業都非常重視,大資料也是第一個納入國家戰略的技術。今天為大家講一下零基礎大資料學習必學技術有哪幾種。 大資料給大多數人的感覺是,專業性強,屬於“高大上”的技術。一部分人對大資料比較感興趣,會上網搜尋一些概念性的簡單瞭解,而
5個常用的大資料視覺化分析工具,你知道嗎?
大資料及移動網際網路時代,每一個使用移動終端的人無時無刻不在生產資料,而作為網際網路服務提供的產品來說,也在持續不斷的積累資料。資料如同人工智慧一樣,往往能表現出更為客觀、理性的一面,資料可以讓人更加直觀、清晰的認識世界,資料也可以指導人更加理智的做出決策。 而在大資料時代的今天,最有價值的商品
f5到底重新整理了點什麼,你知道嗎
引言 前面翻到了http快取相關內容,關於強制快取和協商快取,他們之間的差別可能大家比較清楚。 並且常規情況下是否該使用快取以及使用哪種快取, 相關文章多且全,這裡不再贅述。 不過使用者的不同行為會打破原有規範, 本文就會去探究下不同行為下的瀏覽器快取表現。也就是f5到底重新整理了哪些內容 瀏覽器快取
從五個方面解說:數字技術對就業的有怎樣的影響,你知道嗎?
一直以來人們對技術進步又愛又恨,技術進步所帶來的糾結在歷史上不勝列舉。 公元一世紀,羅馬皇帝韋巴薌拒絕採用新機器運輸神廟石柱,因為這會搶了工人的飯碗。 十八世紀工業革命後,英國工人為奪回被機器代替的工作崗位,開始搗毀機器,發洩憤怒,掀起“盧德運動”
抖音可以這樣加粉,你知道嗎?
在這個共享單車滿地跑,網紅當道,無粉絲不營銷、無社群不口碑的時代,每個人都應該對這些一個又一個的風口有所瞭解,才不至於被淘汰,所以企業發展也是一樣的。 海草舞、答案茶、海底撈抖音套餐……越來越多的抖音段子在各個社交圈裡流傳時,我們都看到了視訊傳播給企業發展帶來
這幾個省二建考試不限專業了,你知道嗎?
二建報考通用條件 (一)、凡遵紀守法,具備工程類或工程經濟類中等專科以上學歷並從事建設工程專案施工管理工作滿2年的人員,可報名參加“二級建造師執業資格考試”。 (二)、符合上述(一)的報名條件,具有工程(工程經濟類)中級及以上專業技術職稱或從事建設工程專案施工管
#Java 關鍵字volatile 與 synchronized 作用與區別,你知道嗎?
Java關鍵字volatile與synchronized作用是什麼,區別又是什麼呢?下面我們可以看看: 如果有想要學習java的小夥伴,可來我們的java學習扣裙哦:72340,3928裡面贈送java系列教學視訊和資料!小編也是從事了6年java開發的全棧工程
調音臺應該放在哪裡,你知道嗎?
譯者簡述 這篇文章就調音臺應該放在教堂的什麼位置進行了分析描述,雖然我們在國內很少經歷在教堂裡調音,但是它和在劇場、演出現場中應該把調音臺放在哪裡有異曲同工之妙,值得我們借鑑。 我們應該把調音臺放在哪裡? 這個問題非常簡單,但是有80%的教堂會選擇錯誤的答案。 在實際
國內一線網際網路公司年終獎發放,你知道嗎?
年將盡,我們即將迎來年終獎,同時也預示著年後跳槽季的到來,這裡小編就給大家收集了一些知名網際網路公司的年終福利,大家提前有所瞭解,方便年後做出選擇。——記得要認真看完哦! 百度 Offer 上寫得是 14.6 個月薪水,年中發 0.6 個月,年底發 2 個月,年終獎是要算
程式設計師是如何從複雜的程式碼裡找到bug的,你知道嗎?
我曾經做了兩年大型軟體的維護工作,那個專案有10多年了,大約3000萬行以上的程式碼,參與過開發的有數千人,程式碼checkout出來有大約5個GB,而且bug特別多,open的有上千,即使最高優先順序的showstopper也有上百。分享下我的debug的經驗。1.優先解決
excel操作技巧,你知道嗎?反正我不知道
今天就是聖誕節了,不知道小夥伴們的公司給你們發了什麼福利呢?滿滿的祝福還是紅包大獎勵呢?這些都是大家的一點心意,今天小編給你們分享一些福利,就算是給大家拜個早年了! 對於excel來說,我們會操作的技巧都是你或多或少的,excel的操作技巧有很多,小編今天就和你們分享一些比較好用的exce
嵌入式軟體工程師真實待遇,你知道嗎
物聯網來勢凶猛,因為他們的發展改變了人們的生活方式,也為嵌入式技術帶來商機。說到嵌入式,不得不知,嵌入式已經在我們生活中無處不在了,小到現在我們的共享單車,銀行,醫療大到航空航天領域。而所有人疑問的這技術這麼發展,那嵌入式工程師的真實待遇又是怎麼樣的呢?跟著華清遠見的小編一起
一個合格的web前端程式設計師應該具備的幾個條件,你知道嗎?
自己經常與前端程式設計師接觸,下面就來聊聊一個合格的WEB前端都需要具備些什麼?響應式頁面佈局既然是前端,那麼難免經常做頁面,有PC的頁面、有APP的頁面、還有手機端的頁面,還有PC和手機端共用的頁面,也就是響應式頁面,因為很多時候,為了節約各種成本,必須要實現一套能夠相容P