破日編程吧
Ⅰ 編程5分鍾,命名2小時!大神程序員都在用這套命名方法
在 軟體中隨處可見命名:要給變數、函數、參數、類和封包命名,還要給源代碼及源代碼所在目錄命名,甚至還有jar文件、war文件和ear文件命名。
但是,看似簡單的命名,也是讓不少程序員頭疼的問題。 有一些小夥伴,在進行變數命名的時候,對於自己熟悉的英文,可能還會用英文命名一下,如果需要命名的部分不會用英文表達,或許就直接用拼音了。
有的童鞋一下想不起來怎麼命名,直接用拼音直接用aa,bb等這樣沒有任何代表意義的字母來命名,可讀性非常差,可能自己今天寫的,一個星期後回來再看,也忘記其具體代表的含義了。
因此,許多人在寫代碼之前,總會在想啊想啊,用什麼命名法好呢?對於經常在C++、Java、Python等主流語言上切換的強迫症來說,換個語言換種命名風格簡直不要太混亂。
既然有這么多命名要做,不妨做好它。本期內容中,非同步君為大家帶來了起個好名字應遵從的幾條簡單規則,一起來看看吧
— 01 —
名副其實
名副其實說起來簡單。我們想要強調,這事很嚴肅。選個好名字要花時間,但省下來的時間比花掉的多。注意命名,而且一旦發現有更好的名稱,就換掉舊的。這么做,讀你代碼的人(包括你自己)都會更開心。
變數、函數或類的名稱應該已經答復了所有的大問題。它該告訴你,它為什麼會存在,它做什麼事,應該怎麼用。如果名稱需要注釋來補充,那就不算是名副其實。
名稱d什麼也沒說明。它沒有引起讀者對時間消逝的感覺,更別說以日計了。我們應該選擇指明了計量對象和計量單位的名稱:
選擇體現本意的名稱能讓人更容易理解和修改代碼。下列代碼的目的何在?
為什麼難以說明上述代碼要做什麼事?裡面並沒有復雜的表達式,空格和縮進中規中矩,只用到三個變數和兩個常量,甚至沒有涉及任何其他類或多態方法,只是(或者看起來是)一個數組的列表而已。
問題不在於代碼的簡潔度,而在於代碼的模糊度:即上下文在代碼中未被明確體現的程度。上述代碼要求我們了解類似以下問題的答案:
(1)theList中是什麼類型的東西?
(2)theList零下標條目的意義是什麼?
(3)值4的意義是什麼?
(4)我怎麼使用返回的列表?
問題的答案沒體現在代碼段中,可代碼段就是它們該在的地方。比方說,我們在開發一種掃雷 游戲 ,我們發現,盤面是名為theList的單元格列表,那就將其名稱改為gameBoard。
盤面上每個單元格都用一個簡單數組表示。我們還發現,零下標條目是一種狀態值,而該種狀態值為4表示「已標記」。只要改為有意義的名稱,代碼就會得到相當程度的改進:
注意,代碼的簡潔性並未被觸及。運算符和常量的數量全然保持不變,嵌套數量也全然保持不變,但代碼變得明確多了。
還可以更進一步,不用int數組表示單元格,而是另寫一個類。該類包括一個名副其實的函數(稱為isFlagged),從而掩蓋住那個魔術數[1]。於是得到函數的新版本:
只要簡單改一下名稱,就能輕易知道發生了什麼。這就是選用好名稱的力量。
— 02 —
避免誤導
程序員必須避免留下掩藏代碼本意的錯誤線索。應當避免使用與本意相悖的詞,例如,hp、aix和sco都不該用作變數名,因為它們都是Unix平台或類Unix平台的專有名稱。即便你是在編寫三角計算程序,hp看起來是一個不錯的縮寫[2],但那也可能會提供錯誤信息。
別用accountList來指稱一組賬號,除非它真的是List類型。List一詞對程序員有特殊意義。如果包納賬號的容器並非真是一個List,就會引起錯誤的判斷。
所以,用accountGroup或bunchOfAccounts,甚至直接用accounts都會好一些。
提防使用外形相似度較高的名稱。例如,想區分模塊中某處的XYZControllerFor-EfficientHandlingOfStrings和另一處的-OfStrings,會花多長時間呢?這兩個詞的外形實在太相似了。
以同樣的方式拼寫出同樣的概念才是信息。拼寫前後不一致就是誤導。我們很享受現代Java編程環境的自動代碼完成特性。鍵入某個名稱的前幾個字母,按一下某個熱鍵組合(如果有的話),就能得到一列該名稱的可能形式。
假如相似的名稱依字母順序放在一起,且差異很明顯,那就會相當有助益,因為程序員多半會壓根不看你的詳細注釋,甚至不看該類的方法列表就直接看名字挑一個對象。
誤導性名稱真正可怕的例子,是用小寫字母l和大寫字母O作為變數名,尤其是在組合使用的時候。當然,問題在於它們看起來完全像是常量「壹」和「零」。
讀者可能會認為這純屬虛構,但我們確曾見過充斥這類名稱的代碼。有一次,代碼作者建議用不同字體寫變數名,好顯得更清楚些,但前提是這種方案得要通過口頭和書面傳遞給未來所有的開發者才行。後來,只是做了簡單的重命名操作,就解決了問題,而且也沒引起別的問題。
— 03 —
做有意義的區分
如果程序員只是為滿足編譯器或解釋器的需要而寫代碼,就會製造麻煩。例如,因為同一作用范圍內兩樣不同的東西不能重名,你可能會隨手改掉其中一個的名稱,有時乾脆以錯誤的拼寫充數,結果就會出現在更正拼寫錯誤後導致編譯器出錯的情況。
光是添加數字系列或是廢話遠遠不夠,即便這足以讓編譯器滿意。如果名稱必須相異,那麼其意思也應該不同才對。
以數字系列命名(a1、a2…aN)是依義命名的對立面。這樣的名稱純屬誤導——完全沒有提供正確信息,沒有提供導向作者意圖的線索。試看:
如果參數名改為source和destination,這個函數就會像樣許多。
廢話是另一種沒意義的區分。假設你有一個Proct類,如果還有一個名為ProctInfo或ProctData的類,那它們的名稱雖然不同,意思卻無區別。Info和Data就像a、an和the一樣,是意義含混的廢話。
注意,只要體現出有意義的區分,使用a和the這樣的前綴就沒錯。例如,你可能把a用在域內變數,而把the用於函數參數[5]。但如果你已經有一個名為zork的變數,又想調用一個名為theZork的變數,麻煩就來了。
廢話都是冗餘。variable一詞永遠不應當出現在變數名中。table一詞永遠不應當出現在表名中。NameString會比Name好嗎?難道Name會是一個浮點數?如果是這樣,就違反了關於誤導的規則。
設想有一個名為Customer的類,還有一個名為CustomerObject的類,它們的區別何在呢?哪一個是表示客戶 歷史 支付情況的最佳方式?
有一個應用反映了這種狀況。為當事者諱,我們改了一下,不過犯錯的代碼的確就是這個樣子:
程序員怎麼知道該調用哪個函數呢?
如果缺少明確約定,那麼變數moneyAmount與money就沒區別,customerInfo與customer沒區別,accountData與account沒區別,theMessage也與message沒區別。要區分名稱,就要以讀者能鑒別不同之處的方式來區分。
— 04 —
使用讀得出來的名稱
人類長於記憶和使用單詞。大腦的相當一部分就是用來容納和處理單詞的。單詞能讀得出來。人類的大腦中有那麼大的一塊地方用來處理言語,若不善加利用,實在是種恥辱。
如果名稱讀不出來,討論的時候就會像個傻鳥。「哎,這兒,鼻涕阿三喜摁踢(bee cee arr three cee enn tee)[6]上頭,有個皮挨死極翹(pee ess zee kyew)[7]整數,看見沒?」這不是小事,因為編程本就是一種 社會 活動。
有一家公司,程序裡面寫了一個genymdhms(生成日期,年、月、日、時、分、秒),他們一般讀作「gen why emm dee aich emm ess」[8]。我有見字照拼讀的惡習,於是開口就念「gen-yah-mudda-hims」。
後來好些設計師和分析師都有樣學樣,聽起來傻乎乎的。我們知道典故,所以會覺得很 搞笑 。 搞笑 歸 搞笑 ,實際是在強忍糟糕的命名。在給新開發者解釋變數名的意義時,他們總是讀出傻乎乎的自造詞,而非恰當的英語詞。比較
現在讀起來就像人話了:「喂,Mikey,看看這條記錄!生成時間戳(generation timestamp)[9]被設置為明天了!不能這樣吧?」
— 05 —
使用可搜索的名稱
對於單字母名稱和數字常量,有一個問題,就是很難在一大篇文字中找出來。
找MAX_CLASSES_PER_STUDENT很容易,但想找數字7就麻煩了,它可能是某些文件名或其他常量定義的一部分,出現在因不同意圖而採用的各種表達式中。如果該常量是個長數字,又被人錯改過,就會逃過搜索,從而造成錯誤。
同樣,e也不是一個便於搜索的好變數名,它是英文中最常用的字母,在每個程序、每段代碼中都有可能出現。由此而見,長名稱勝於短名稱,搜得到的名稱勝於用自造編碼代寫就的名稱。
竊以為單字母名稱僅用於短方法中的本地變數。名稱長短應與其作用域大小相對應 [N5]。若變數或常量可能在代碼中多處使用,則應賦予其便於搜索的名稱。再比較:
注意,上面代碼中的sum並非特別有用的名稱,不過至少搜得到它。採用能表達意圖的名稱,貌似拉長了函數代碼,但要想想看,WORK_DAYS_PER_WEEK比數字5好找得多,而列表中也只剩下了體現作者意圖的名稱。
— 06 —
避免使用編碼
編碼已經太多,無謂再自找麻煩。把類型或作用域編進名稱裡面,徒然增加了解碼的負擔。沒理由要求每位新人都在弄清要應付的代碼之外(那算是正常的),還要再搞懂另一種編碼「語言」。這對解決問題而言,純屬多餘的負擔。帶編碼的名稱通常也不便發音,容易打錯。
匈牙利語標記法
在往昔名稱長短很重要的時代,我們毫無必要地破壞了不編碼的規矩,如今後悔不迭。Fortran語言要求首字母體現出類型,導致了編碼的產生。BASIC語言的早期版本只允許使用一個字母再加上一位數字。匈牙利語標記法[10](Hungarian Notation,HN)將這種態勢愈演愈烈。
在Windows的C語言API的時代,HN相當重要,那時所有名稱要麼是一個整數句柄,要麼是一個長指針或者void指針,要不然就是string的幾種實現(有不同的用途和屬性)之一。那時候編譯器並不做類型檢查,程序員需要匈牙利語標記法來幫助自己記住類型。
現代編程語言具有更豐富的類型系統,編譯器也記得並強制使用類型。而且,程序員趨向於使用更小的類、更短的方法,好讓每個變數的定義都在視野范圍之內。
Java程序員不需要類型編碼,因為對象是強類型的,代碼編輯環境已經先進到在編譯開始前就能監測到類型錯誤的程度!所以,如今HN和其他的類型編碼形式都純屬多餘。它們增加了修改變數、函數或類的名稱或類型的難度,它們增加了閱讀代碼的難度,它們製造了讓編碼系統誤導讀者的可能性。
成員前綴
也不必用m_前綴來標明成員變數。應當把類和函數做得足夠小,以消除對成員前綴的需要。你應當使用某種可以高亮或用顏色標出成員的編輯環境。
此外,人們會很快學會無視前綴(或後綴),而只看到名稱中有意義的部分。代碼讀得越多,眼中就越沒有前綴。最終,前綴變作了不入法眼的廢料,變作了舊代碼的標志物。
介面和實現
有時也會出現採用編碼的特殊情形。比如,你在做一個創建形狀用的抽象工廠(Abstract Factory),該工廠是一個介面,要用具體類來實現。你怎麼來命名工廠和具體類呢?IShapeFactory和ShapeFactory嗎?我喜歡不加修飾的介面。前導字母I被濫用到了說好聽點兒是干擾,說難聽點兒根本就是廢話的程度。
我不想讓用戶知道我給他們的是介面,而就想讓他們知道那是一個ShapeFactory。如果在介面和實現中必須選其一來編碼的話,我寧肯選擇實現。ShapeFactoryImp,甚至是醜陋的CShapeFactory,都比對介面名稱編碼好。
-END-
代碼整潔之道
作者: [美] 羅伯特·C. 馬丁(Robert C. Martin)
譯者: 韓磊
內容簡介:
軟體質量,不但依賴架構及項目管理,而且與代碼質量緊密相關。這一點,無論是敏捷開發流派還是傳統開發流派,都不得不承認。
本書提出一種觀點:代碼質量與其整潔度成正比。干凈的代碼,既在質量上較為可靠,也為後期維護、升級奠定了良好基礎。作為編程領域的佼佼者,本書作者給出了一系列行之有效的整潔代碼操作實踐。這些實踐在本書中體現為一條條規則(或稱「啟示」),並輔以來自實際項目的正、反兩面的範例。只要遵循這些規則,就能編寫出干凈的代碼,從而有效提升代碼質量。
本書閱讀對象為一切有志於改善代碼質量的程序員及技術經理。書中介紹的規則均來自作者多年的實踐經驗,涵蓋從命名到重構的多個編程方面,雖為一「家」之言,然誠有可資借鑒的價值。
Ⅱ 有沒有那種不費腦子又不侮辱觀眾智商的甜甜偶像劇推薦
1、《同學兩億歲》;盡管有諸多的槽點讓人無法看下來。可是有的情況下堅持不懈一下便會見到讓人開心的物品。每一個人物角色都平凡而不平庸十分獨特,小女孩的演得確實蠻非常好的啊!有點像徐靜蕾,不愧是她挑的明星。值得一看。
2、《來到你的世界》;很有創意的漫穿,以前日本國演過一個,盡管有長瀨智也哪個逗b出演可是哪個戲很喪,這一戲就好玩兒多了!越到後邊越漂亮。男人女人主人公還是很有cp感的,副線cp也很萌。主創人員良知線上,知名演員演得線上,漂亮的當地青春偶像劇。
3、《來自海洋的你》;來源於深海的你=來源於星星的你+深藍色大海的傳說相比唯美愛情小故事,這一部劇更好像童話故事改寫的小美人魚公主奇遇記再再加生物技術,沒誰了!不用調侃哪些演得,我認為大家應當把重中之重放到導演上,故事情節緊湊型,持續性和驚悚感最高分。
4、《我的女友要上天》;《我的女友要上天》劇與其名,有點喪心病狂,有點小爛漫,有點嬉皮笑臉,晃晃盪盪,可是確實輕輕鬆鬆又漂亮。從第一集剛開始我也一直在看見九九怎樣達到目標,撲到純陽男傲嬌進行自身的得道成仙偉業。消磨時光能夠 一看。
5、《親愛的活祖宗》;好甜的劇,全程姨母笑,男主角太奶狗了。大家都無需去看看哪些韓劇啦,國內奶狗比日本單眼皮小眼睛男帥多了!全是新手,可演得居然都那麼好,一點不尬,由此可見沒有總流量的劇才有可能是熱劇!
6、《獨家記憶》;盡管甜是這一部劇的宣傳策劃,可是台本身甜得很當然真正,沒有有意以便甜而甜。並且,這應該是最貼近真正學校生活的青春校園劇了,男人女人主人公的選人取得成功,演譯極致,故事情節也是一層一層進行的,隨處有懸念,時刻有埋下伏筆。值得一看。
7、《最親愛的你》;聽說是重拍的韓國電視劇,但是沒看了正版的我認為還不錯耶。很真正的青春愛情故事,五個性情各不相同的女生,每一個人都是有自身的密秘,都是有分別的優點和缺點,在成長階段中越來越更為出色,友情更為濃厚,也獲得了歸屬於自身的感情。我感覺這劇比近期的許多上星劇都漂亮,大約是由於能從劇里的角色的身上恍惚間見到自身的影子吧。
8、《眾王駕到》;這一部劇十分合適愛想像,愛想像的女孩子,瑪麗蘇另加解除神密故事情節,樂雪永生不死的緣故,三個古時候的王和女主角究竟有什麼聯絡,小寒一直要守衛洛夕的緣故等。驚悚的一部分還是很有趣。強烈推薦。
9、《炮灰攻略》;IP劇,花樣穿越重生,主題很新奇,情況道具備認真,情節表情圖融合二三次元特點,很贊,但知名演員長相太過路人,倆位男主角演得充分發揮還不平穩。總而言之,還是靠台本自身。
10、《奈何boss要娶我》;由於這一部劇的資產層面無法跟上,因此許多 地區也沒有拍。但是我認為知名演員們的演得已經很棒了。我還記得男主角和女主角全是學跳舞。並且以前別的的那類當代高甜劇她們的配聲都無法跟上。大夥兒能夠 看一下陳益韜的新浪微博,確實有很多苦處,一開始沒有人適用不紅,資產層面確實挺不易的,我很希望第二部,我認為知名演員們全是磨練中漸漸地越來越更強的,男主女主全是舞蹈的彷彿,我認為演得確實挺好了。
Ⅲ 有必要讓孩子學習少兒編程嗎
鏈接:
少兒編程教學可以大致分為兩類:一類是Scratch或是仿Scratch的圖形化編程教學,以培養興趣、鍛煉思維為主,趣味性較強。在這里,可以創造屬於自己的動畫,故事,音樂和游戲,這個過程其實就像搭積木一樣簡單。此外,還有機器人編程,也就是搭建機器人,通過運行程序讓它動起來,著重培養孩子的動手能力。另一類是基於Python、C++等高級編程語言的計算機編程教學,目標往往是參加信息學奧賽等科技品牌賽事,如信息學奧林匹克競賽/聯賽、機器人競賽、科技創新大賽等,或為後續的專業學習和職業技能打下基礎。

Ⅳ 我要製作一個軟體,但我不會編程,我想請人做,應該在網上哪裡找。
製作一個軟體,但我不會編程,我想請人做,應該在網上哪裡找
簡單點來說,要視手機APP的需求及質量而言,價位一般在幾千到十幾萬左右,更高端的價格更高。

四、APP開發公司的所在地
需要注意的是,同樣實力的APP開發公司,在不同的城市也會導致APP的成本費用高一些
Ⅳ 自學編程可以嗎,難度大不大啊
要說編程難不難,這給你總結下編程的難點吧:
1、初學者。編程是用計算機語言和計算機交流,你輸入什麼,你期望計算機理解之後,輸出你需要的結果。所以這個過程可以概括為「輸入–計算–輸出」。學習一門計算機語言,說難不難,說易也不太容易,為什麼呢?如果你是編程的初學者,你要上手一門語言,是非常困難的(天才除外);但如果你是精通一兩門語言,再去學其他語言,可以說一個星期就能熟悉。所以,對大部分初學者來說,編程語言是難點。
2、編程思想。程序員一定要有編程思想。跳過初學者這一關,假設你可以對任何語言順手拈來、即插即用,那麼,你水平就一定很高了嗎?其實不然,這只能說明你學習能力上一層樓了,但並不說明你就多麼厲害。比如,你熟悉設計模式嗎?設計系統的時候有沒考慮擴展性?是否考慮到性能問題……如果整天只做crud,不去關注以上問題的話,瓶頸是很難突破的。那麼編程思想何來?就要平時多閱讀這類的書籍和文章,比如設計模式,比如高並發系統設計相關知識等。除此以外,還要多思考,為什麼這樣設計,所謂學而不思則罔,思而不學則殆!
3、溝通能力。好了,即使你掌握多種語言,又可以把系統設計要得很溜了,但是如果你是個不會說話的啞巴,你就無法表達出自己的思想,無法向老闆展現你的才能,那麼你的職業生涯會受到很多限制。我自認為本人的溝通能力是弱項,自己也在不斷努力改善這點。現在每次參加討論的時候都會積極發言,表達自己的觀點,除此之外還報了一些口才課,來提升自己的表達能力。
當然,每個人的邏輯思維能力不同,興趣點不同,總有一部分人覺得容易,一部分人覺得吃力。但只要你想學,肯定能學會。
學習編程是一個漫長而痛苦的過程,需要持之以恆的耐心,千自萬不能急於求成。對於一名初學者來說,最重要的還是打好基礎。說實話入門不難,但是想做精就比較困難了。
Ⅵ 少兒編程學校哪家好
少兒編程學校哪家好,需要一個綜合考慮的過程,要看各方面的因素,並不一定大品牌、價格高的就是好的,而是清楚學習的目的,選擇一個適合孩子的。
最好是給孩子找專業畢業的老師,編程邏輯和習慣比較標准,還要注意的就是編程老師的教學方式和教學經驗怎麼樣。其次,就是上課的模式,有一對一和一對二的教學模式,最好是帶孩子試聽之後再決定。要考慮到孩子的學習熱情和學習效率,課前課後,是否安排相應的助教老師輔導孩子的學習。
少兒編程學校哪家好,家長選擇報名之前,最好的方式自然是去體驗課堂的氛圍和教學的方式,這樣才能選擇出最適合孩子的機構,學習的效率也會更高。

面對眾多的少兒編程培訓機構,想要給孩子找到一家優質的平台,不是一件很容易的事情,可以參考以下幾點:
少兒編程學校哪家好?少兒編程學什麼?由哪些方面進行判斷?
師資方面。不管是成人還是孩子,編程培訓平台的師資水平很重要,尤其是對小孩子來說,學習態度、學習習慣的養成都和編程老師有關,所以老師優質與否很關鍵。
看編程培訓機構的口碑。一家編程培訓平台的口碑都是家長評價長期積累起來的,在一定程度上意味著綜合實力、教學經驗等,口碑比知名度更靠譜。
班級人數。班級人數多少是和孩子的學習性格、學習效果有關的,如果孩子性格靦腆,人數眾多的大班制是不合適的,當然,人數越少,學習效果越好,這是眾所周知的。
Ⅶ 我們在學習編程語言的時候比如C語言Java語言這些編輯器EditPlus、UltraEdit、sublime哪個更好一些
選Visual Studio Code(VSCode)。
EditPlus UltraEdit SublimeText都是收費軟體,需要破解。C/C++ Vi & VIM 足以,其他我都覺得挺弱的,VIM實在是太強大了。
其他我習慣UE,涉及字元集時候非常有用。
如果代碼量非常大的話,推薦sourceinsight.
EP我覺得和UE沒多大區別,看個人喜好了。sublime不了解追問sublime這款編輯器08年新出來在程序員界非常火,而且也是現在最為流行的編輯器,無論是酷炫的界面還是強大的編輯功能,而且sublime最棒的就是很多強大的可以自由組裝的插件,那些插件用好了基本上也就相當於一個IDE了,不單單能編寫代碼還能在裡面編譯運行程序,反正這些年來最流行的編輯器追答額。。。好吧,我落伍了。 vi對於我來說夠用了。謝謝科普追問sublime什麼都好就是對中文支持比較差尤其是編碼問題特別頭疼,sublime我已經把它卸載了,我現在電腦上除了IDE之外就用notepad++真心不錯,開源免費麻雀雖小五臟俱全,真心不錯
