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