如何才能寫出“高質(zhì)量”的代碼?
謝謝邀請我,
作為一個寫了十幾年代碼的程序員,做好軟件并不全是代碼。換句話說,一個程序員s程序員的優(yōu)秀不僅僅體現(xiàn)在代碼上,還有內(nèi)部的編程思路。更高的層次是框架思想。很多新手都會有很多疑問。他們以為會寫代碼就萬事大吉了,會寫代碼之前會有很多疑問。
數(shù)學(xué)不好能學(xué)好編程嗎?
英語不好能學(xué)好編程嗎?
這些都是haven我還沒被介紹過。Itit'入門之后再找不是問題。It這不僅僅是一個程序員能寫多少代碼的問題。真正的項目實施過程中花在寫代碼上的時間不到30%。大部分時間花在設(shè)計和構(gòu)思上。當(dāng)然,調(diào)試和客戶提出的后續(xù)需求占據(jù)了最多的時間。現(xiàn)在很多人還在糾結(jié)要不要多學(xué)點(diǎn)編程語言。編程語言本質(zhì)上是一種工具,主要的指導(dǎo)思想是編程思想。
現(xiàn)實中如何才能寫出高質(zhì)量的代碼?1.良好的基本編程技能。再高的樓,也需要很強(qiáng)的編程基礎(chǔ)。你不不需要掌握很多編程語言。關(guān)鍵是要對一門編程語言非常熟悉,并且從里到外徹底理解。在這個層面掌握幾門編程語言并不是那么重要。在這個層次上,你可以舉一反三,它贏了切換到一種新的編程語言并不費(fèi)事。沒事的話可以回頭看看基礎(chǔ)書。程序員越重視基本功的學(xué)習(xí),做java的程序員就越多,java編程思想的書。
2.專業(yè)知識強(qiáng)。編程語言只是一個工具。如何用好工具,取決于工具是用來做什么的。例如,C語言或C編程可用于安全領(lǐng)域。如果安全專業(yè)知識非常扎實,工具使用更加熟練,就能出現(xiàn)高質(zhì)量的代碼。要達(dá)到最終的目的,所有的細(xì)節(jié)都要到位,缺一不可。
3.好的軟件框架,軟件框架是編寫高質(zhì)量代碼的土壤。如果一個能力很強(qiáng)的人進(jìn)入一個亂七八糟的公司,基本上很難發(fā)揮出他最大的潛力,所以生存土壤很重要。一個優(yōu)秀的產(chǎn)品必須是代碼所有模塊的有機(jī)配合才能做出。一個模塊的優(yōu)秀代碼是優(yōu)秀的,整個產(chǎn)品出問題意義不是很大。
4.高質(zhì)量的代碼從來不是一次做出來的,而是經(jīng)過多次打磨和修改的。玩過開源的人都應(yīng)該明白,代碼模塊不斷升級優(yōu)化,不僅僅是功能的增加,更是代碼質(zhì)量的精細(xì)化。所以,想要寫出高質(zhì)量的代碼,需要敢于從自己做起,對自己狠一點(diǎn),才能得到高質(zhì)量的代碼。細(xì)心的人可以觀察一下你身邊優(yōu)秀的程序員,看看他們是不是這么做的。
做到以上四點(diǎn),堅持下去寫出來的代碼質(zhì)量不會差,當(dāng)然要知道如何閱讀別人寫的優(yōu)秀代碼,一開始你可能無法理解,但你可以不要把它切成碎片來學(xué)習(xí)。以前有個linux內(nèi)核愛好者,整體看linux內(nèi)核代碼,有一天看到他很開心,問怎么回事,說明白linux內(nèi)核里的內(nèi)存是怎么管理的,然后拉著我講了半天。雖然他沒有。;他堅持要聽完。畢竟寫代碼的前提是能看懂,所以開源社區(qū)的代碼如果能看懂就是一個很大的進(jìn)步,然后一步一步掌握,把格局放大才能做出更大的東西。
mysql小數(shù)類型建表怎么用?
mysql十進(jìn)制類型表構(gòu)建的使用步驟如下:
1.L:【必填】表示是或否概念的字段必須以is_***,數(shù)據(jù)類型為無符號tinyint的形式命名(1表示是,0表示否)。
注意:如果任何字段是非負(fù)的,它必須是無符號的。
正例:字段名為_d:QY_管理,支付_配置,級別3_名稱為例。
反例:qyadmin,payconfig,lever_3_name。
3.level:[強(qiáng)制]表名不使用復(fù)數(shù)名詞。
注意:mysql中的表名應(yīng)該只代表表中的實體內(nèi)容,不代表實體數(shù)據(jù),DO對應(yīng)的類名也是單數(shù),符合表達(dá)式習(xí)慣。
4.級別:[強(qiáng)制]禁用保留字,如desc、范圍、匹配、延遲等。參考mysql官方保留字。
5.級別:[必填]主鍵索引名稱為pk_字段名;唯一索引名是uk_fieldname公共索引名是idx_fieldname。
描述:pk_是主鍵uk_即唯一鍵idx_即index的縮寫。
6.Level:【強(qiáng)制】decimal為小數(shù)類型,禁止float和double。
注:mysqlsfloat,double在存儲的時候有精度損失的問題,比較值的時候很可能會丟失。錯誤的結(jié)果。如果存儲數(shù)據(jù)的范圍超過了小數(shù)的范圍,建議將數(shù)據(jù)拆分成整數(shù)和小數(shù)分別存儲。
7.Level:[Mandatory]如果存儲的字符串長度幾乎相等,則使用char定長字符串類型。
8.Level:【強(qiáng)制】vaarchar為變長字符,存儲空間不提前分配,長度不得超過5000。如果存儲長度大于該值,則將字段類型定義為文本,并單獨(dú)一個表,使用主鍵進(jìn)行響應(yīng),以免影響其他字段的索引效率。
9.級別:[強(qiáng)制]該表必須有三個字段:ID、create_time和updated_time。
描述:id必須是主鍵,類型是無符號bigint,支持的數(shù)字大小是19位。單表是自增長的,步長為1。cr:為例:user_task,pay_config,force_extra。
11.級別:[推薦]庫名盡量和應(yīng)用程序名一致。
12.級別:[推薦]如果修改字段的含義或追加字段指示的狀態(tài),需要及時更新字段備注。
13.級別:【推薦】字段允許冗余,以提高查詢性能,但必須考慮數(shù)據(jù)的一致性,冗余字段應(yīng)遵循以下規(guī)則:
1)不經(jīng)常修改的字段。
2)不是varchar超長字段,更不是文本字段。
作為正面例子,:的商品類別名稱使用頻率高,字段長度短,名稱基本不變。類別名稱可以冗余地存儲在關(guān)聯(lián)表中,以避免關(guān)聯(lián)查詢。
14.級別:【推薦】只有當(dāng)單個表的行數(shù)超過500萬或者單個表的容量超過2GB時,才建議對數(shù)據(jù)庫和表進(jìn)行劃分。
注:如果mysql預(yù)測三年內(nèi)的數(shù)據(jù)量根本達(dá)不到這個水平,請不要創(chuàng)建表時不要分割數(shù)據(jù)庫和表。
15.level[reference]適當(dāng)?shù)淖址鎯﹂L度不僅節(jié)省了數(shù)據(jù)庫表空間和索引存儲,還提高了檢索速度。。