自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

怎樣度過(guò)第一份編碼工作的艱難時(shí)期?

開(kāi)發(fā) 前端
本文總結(jié)了我在第一份軟件工程工作中犯的錯(cuò)誤。假如你和那時(shí)的我一樣,正在經(jīng)歷艱難的日子,這篇文章應(yīng)該能夠給你幫助。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

軟件工程或是數(shù)據(jù)科學(xué)對(duì)于很多人來(lái)說(shuō),實(shí)在不是一件容易的事。特別在沒(méi)有編碼經(jīng)驗(yàn)的情況下,如果第一份工作是在這兩個(gè)領(lǐng)域,會(huì)讓人士氣低落。

我常常收到“尋求改進(jìn)方法”的留言或者私信。但事實(shí)上,你真正需要的是有人對(duì)你說(shuō)“你能做到!”

本文總結(jié)了我在第一份軟件工程工作中犯的錯(cuò)誤。假如你和那時(shí)的我一樣,正在經(jīng)歷艱難的日子,這篇文章應(yīng)該能夠給你幫助。

[[330804]]

1. 巧妙即可,無(wú)需可讀

寫好代碼很難,理解錯(cuò)誤的代碼更難。剛開(kāi)始時(shí)我們很可能難以直觀理解,有一個(gè)高級(jí)開(kāi)發(fā)人員就以下問(wèn)題提出了建議:

  • 過(guò)度抽象
  • 同一行上有多個(gè)嵌套的if/else語(yǔ)句
  • 過(guò)度使用鏈?zhǔn)椒椒?/li>
  • 從堆棧溢出復(fù)制或粘貼正則表達(dá)式,不帶注釋

將邏輯壓縮到盡可能小的空間里,使筆者自覺(jué)很聰明。但代碼的可讀性就消失了。根據(jù)克尼根定律:調(diào)試的難度是編寫代碼的兩倍。因此,如果讀者盡可能巧妙地編寫代碼,那么根據(jù)定義,就因?yàn)椴粔蚵斆鞫鵁o(wú)法對(duì)其進(jìn)行調(diào)試。

2. 提交審閱的代碼合并了多個(gè)功能

筆者最先學(xué)到的事項(xiàng)之一,就是不要在同一個(gè)請(qǐng)求中組合多個(gè)特性。這對(duì)于審查代碼的人并不友好。超過(guò)幾百行的代碼,會(huì)讓其他人很難在腦海中走一遍執(zhí)行過(guò)程。

有時(shí)這是tickets范圍不佳的結(jié)果。所以筆者總是告訴新開(kāi)發(fā)人員,如果他們認(rèn)為可以將ticket進(jìn)一步細(xì)分為子ticket,則應(yīng)回推,越小越好。

3. 使用無(wú)上下文的變量名

想出好的變量名非常困難,但那時(shí)我很想要盡快完成它。所以筆者選擇了腦海中浮現(xiàn)的第一個(gè)名字。

  • 用戶的姓氏是uln。
  • 一組電子郵箱是array。

兩者都不算好主意,并且使得任何人都很難理解所寫內(nèi)容,甚至包括筆者自己。

4. 讀取特性Ticket后立即編寫代碼

[[330805]]

圖源:pexels

花一周的時(shí)間在一個(gè)特性上,然后才意識(shí)到這一特性是錯(cuò)誤的,這實(shí)在是太尷尬了,然而筆者不止一次犯過(guò)這個(gè)錯(cuò)誤。

放松心態(tài),理解業(yè)務(wù)問(wèn)題,并且圍繞其規(guī)劃代碼,這對(duì)于工程師而言工作量很大。從中吸取教訓(xùn),在筆者自己的創(chuàng)業(yè)計(jì)劃開(kāi)始之前,讓新的開(kāi)發(fā)人員詳細(xì)規(guī)劃一些tickets。這種微觀規(guī)劃水平有助于理清思路,制定更有效的解決方案。

5. 注釋過(guò)多或過(guò)少

最初,筆者沒(méi)有任何注釋。

第二階段時(shí),筆者每一行都有注釋。add_two_numbers的函數(shù)將會(huì)有著 # adds 2 numbers的注釋。這就有點(diǎn)矯枉過(guò)正了。

回想一下,直到筆者閱讀了其他開(kāi)發(fā)人員編寫的足夠多的代碼,并且注意到希望他們添加注釋的地方,才明白了注釋的真正用處和正確數(shù)量。

6. 推送重復(fù)和未使用的代碼

筆者做了如下所有工作:

  • 已存在于應(yīng)用程序中的書面功能
  • 保留自動(dòng)生成但未使用的文件(即:測(cè)試文件)
  • 添加了未使用的軟件包

有些框架會(huì)自動(dòng)生成許多不必要的文件。當(dāng)開(kāi)始使用一個(gè)應(yīng)用程序時(shí),也不知道所有的現(xiàn)有代碼。筆者發(fā)現(xiàn),避免這些問(wèn)題的最佳方法是,在提交代碼供審閱之前,一定要仔細(xì)閱讀自己編寫的代碼。

圖源:unsplash

7. 允許安全漏洞

筆者很感謝一位出色的高級(jí)開(kāi)發(fā)人員,使筆者的代碼免受黑客攻擊。我做了下述所有操作:

  • 允許SQL注入
  • 允許通過(guò)URL跳轉(zhuǎn)訪問(wèn)受限頁(yè)面
  • 僅用于前端驗(yàn)證
  • 具有增量ID的命名空間URL

建立一份有著最佳安全實(shí)踐的心理檢查清單花了很長(zhǎng)時(shí)間,現(xiàn)在筆者查看其他開(kāi)發(fā)人員代碼時(shí)會(huì)使用該清單。

8. 編寫低效的數(shù)據(jù)庫(kù)查詢

筆者在開(kāi)始第一份工作時(shí),對(duì)數(shù)據(jù)庫(kù)一無(wú)所知。大概花了一年的時(shí)間才弄明白數(shù)據(jù)庫(kù)索引。

那時(shí)我寫了很多N+1 queries,并且創(chuàng)建了db表來(lái)存儲(chǔ)大量沒(méi)有索引的數(shù)據(jù)。這兩者都是應(yīng)用程序緩慢而讓人煩悶的原因。

9. 使用基于錯(cuò)誤的條件邏輯

條件語(yǔ)句if/else是軟件的核心部分。在偽代碼中,它們通常是這樣的:

  1. if x is true 
  2.   do this 
  3. else 
  4.   do that 

但是筆者在編寫自己的第一個(gè)投門磚軟件時(shí),就充滿了如下的邏輯:

  1. do this 
  2. if this fails 
  3.   do that 

有時(shí)需要挽救一個(gè)錯(cuò)誤,比如當(dāng)碰到一個(gè)不可靠的API時(shí)。偶爾出現(xiàn)這樣的問(wèn)題是可以的,但這不能是常態(tài)。

編寫軟件是一件困難但充滿成就感的事,實(shí)踐能讓我們很快成長(zhǎng)起來(lái)。正處于困難的時(shí)期的小伙伴們,但行好事,莫問(wèn)前程,結(jié)果會(huì)在你努力的過(guò)程中悄悄地來(lái)。

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2010-08-10 13:54:49

第一份工作

2015-12-17 15:15:08

自學(xué)編程找工作

2009-06-11 08:21:04

2009-09-22 14:35:35

第一份中文電子雜志

2023-03-06 08:38:23

web3工作

2009-09-22 17:30:00

計(jì)算機(jī)世界

2021-01-07 15:10:30

程序員書單編程

2018-05-15 08:39:31

開(kāi)發(fā)GitAzure

2017-08-14 11:19:42

小程序

2020-12-01 12:00:30

網(wǎng)絡(luò)犯罪勒索軟件黑客

2014-08-28 15:21:03

Linux面試

2021-01-11 17:40:04

技術(shù)資訊

2018-10-30 13:18:31

阿里校招薪資

2021-01-13 09:51:00

程序員技能開(kāi)發(fā)者

2019-01-02 07:43:51

機(jī)器學(xué)習(xí)人工智能學(xué)歷

2023-03-31 13:52:58

AI紐約大學(xué)谷歌

2021-05-17 09:30:51

編碼IDE工具

2023-11-23 09:15:13

人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)