寫在工作的第四年的一點感悟~
編碼之內(nèi)
代碼規(guī)范
代碼規(guī)范化帶給我們的第一個好處就是看著很整齊芦缰、很舒服孩锡。
雖然說我們現(xiàn)在可以用不規(guī)范的方式寫代碼,現(xiàn)在能看得懂,但等過了幾個月后疼约,你再回頭看時估計就兩眼懵圈了。更不要說萬一項目迭代開發(fā)蝙泼,交接給其他人了程剥,所以代碼一定要寫規(guī)范。
下面的是我總結(jié)的一些代碼規(guī)范注意事項:
編碼方式:統(tǒng)一用 UTF-8
汤踏,一般情況下不要去改動它织鲸。
縮進(jìn):統(tǒng)一為 4 個空格,將 Tab size 設(shè)置為 4 則可以保證 tab 鍵按 4 個空格縮進(jìn)溪胶。
括號:花括號不要單獨(dú)一行搂擦,和它前面的代碼同一行。而且哗脖,花括號與前面的代碼之間用一個空格隔開盾饮。
空格:if、else懒熙、for丘损、switch、while 等邏輯關(guān)鍵字與后面的語句留一個空格隔開工扎;運(yùn)算符兩邊各用一個空格隔開徘钥;方法的每個參數(shù)之間用一個空格隔開。
空行:將邏輯相關(guān)的代碼段用空行隔開肢娘,以提高可讀性呈础。空行也只空一行橱健,不要空多行而钞。
變量:一行聲明一個變量,不要一行聲明多個變量拘荡,這樣有利于寫注釋臼节。
命名規(guī)范
想必程序員一想到命名都很頭疼,當(dāng)遇到混亂或錯誤的命名不僅讓我們對代碼難以理解珊皿,更會誤導(dǎo)我們的思維网缝。
良好的命名,則可以大大提高我們的代碼易讀性蟋定,也能大大增強(qiáng)代碼的可維護(hù)性粉臊。
下面的是關(guān)于命名規(guī)范的一些基礎(chǔ):
包命名:域名反寫 + 項目名稱 + 模塊名稱,全部單詞用小寫字母驶兜。
類和接口命名:使用大駝峰規(guī)則扼仲,用名詞或名詞詞組命名远寸,每個單詞的首字母大寫。
方法命名:使用小駝峰規(guī)則屠凶,用動詞或者動名詞命名驰后,第一個單詞的首字母小寫,其他單詞的首字母大寫阅畴。
常量命名:全部為大寫單詞,單詞之間用下劃線分開迅耘。
變量命名:范圍描述 + 意義描述 + 類型描述的組合贱枣,用駝峰式,首字母小寫颤专。
注釋規(guī)范
我們也一定要養(yǎng)成寫注釋的好習(xí)慣纽哥,當(dāng)我們在寫某個程序的時候,可能當(dāng)下記得很清楚栖秕,這一段是什么機(jī)制春塌、如何實現(xiàn),但是當(dāng)你寫的程序越來越多簇捍,你會忘記當(dāng)初為什么這樣寫只壳,改動和交接也十分麻煩,對代碼進(jìn)行注釋就可以有效避免這種情況暑塑。
注釋不僅可以讓人讀懂代碼吼句,甚至能讓讀代碼的人獲取更多信息。
下面是關(guān)于注釋規(guī)范的一些建議:
文件頭注釋:文件頂部統(tǒng)一添加版權(quán)聲明事格。
類和接口注釋:類和接口統(tǒng)一添加 javadoc
注釋惕艳。
方法注釋:方法的用途和參數(shù)說明,以及返回值的說明驹愚。
變量和常量注釋:優(yōu)先采用右側(cè) //
來注釋远搪,若注釋說明太長則在上方添加注釋。
數(shù)據(jù)庫
數(shù)據(jù)庫是很重要的一部分逢捺,無論對于面試還是工作中谁鳍,都是一個老生常談的話題。
比較重要的是數(shù)據(jù)庫優(yōu)化部分劫瞳,最常見的數(shù)據(jù)庫模型主要是兩種棠耕,即關(guān)系型數(shù)據(jù)庫(SQL)和非關(guān)系型數(shù)據(jù)庫(NoSQL)。
常見數(shù)據(jù)庫:
數(shù)據(jù)結(jié)構(gòu)
身為程序員的我們柠新,每天都在和不同的數(shù)據(jù)打交道窍荧。那么我們真的對數(shù)據(jù)結(jié)構(gòu)一清二楚了么?
對各類數(shù)據(jù)結(jié)構(gòu)進(jìn)行了分類恨憎,并且從定義蕊退、特點郊楣、原理解析使用方法以及實現(xiàn)的相關(guān)案例相結(jié)合:
?棧 stack
?隊列 queue
?鏈表 Link
?散列表 Hash Table
?排序二叉樹
?紅黑樹
?B-TREE
?位圖
算法
算法無論是對于學(xué)習(xí)還是工作,都是必不可少的瓤荔。我們掌握了這些算法背后的邏輯思想净蚤,那么是會對我們的學(xué)習(xí)和工作有很好的促進(jìn)作用的。
經(jīng)典算法:
?二分查找
?冒泡排序算法
?插入排序算法
?快速排序算法
?希爾排序算法
?歸并排序算法
?桶排序算法
?基數(shù)排序算法
?剪枝算法
?回溯算法
?最短路徑算法
?最大子數(shù)組算法
?最長公共子序算法
?最小生成樹算法
版本管理
在現(xiàn)在市面上的大部分公司的代碼都是通過版本管理工具來進(jìn)行托管的输硝,從之前的 SVN 到現(xiàn)在基本人人必用的 Git今瀑。
我們需要了解 Git 的每一個具體命令和參數(shù)使用,知道執(zhí)行每個命令會做什么点把,避免各類分支或者 fork 操作引起的沖突問題橘荠。
可以幫助我們:
1.保存開發(fā)過程中的代碼,方便后續(xù)修改郎逃。
2.能清楚的看到每一位團(tuán)隊成員提交哥童、修改的代碼,責(zé)任到人褒翰。
3.方便我們完成協(xié)同開發(fā)的任務(wù)贮懈,高效工作。
4.為后續(xù)客戶提供關(guān)于項目不同版本的記錄优训。
關(guān)于代碼版本管理的工具有很多朵你,下面是我常用的:
?SVN:替換了當(dāng)年開源社區(qū)最為流行的版本控制軟件 CVS,在 CVS 的功能的基礎(chǔ)上有很多的提升同時也能較好的解決 CVS 系統(tǒng)的一些不足揣非。
?Git:用于 Linux 內(nèi)核開發(fā)的版本控制工具撬呢,采用了分布式版本庫的作法,不需要服務(wù)器端軟件妆兑,就可以運(yùn)作版本控制魂拦,使得源代碼的發(fā)布和交流極其方便。
?GitHub:GitHub 是目前為止搁嗓,用戶最多的工具了芯勘,而且也有很多的開源項目提供,一直都是程序員最鐘愛的平臺腺逛,想要學(xué)習(xí)的話荷愕,都可以去下載項目來學(xué)習(xí)。
主流工具:
問題排查與解決能力
我們選擇開發(fā)這條路棍矛,會遇到形形色色的問題安疗,發(fā)生問題的時候,就是檢驗程序員能力的時候够委。很多時候荐类,解決問題并不難,難的是定位問題茁帽。
這里面會涉及到很多知識玉罐,對于我們的知識儲備很重要屈嗤,所以平時一定要做好積累。
編碼之外
筆記
互聯(lián)網(wǎng)這個行業(yè)更新?lián)Q代很快吊输,需要保持不斷的學(xué)習(xí)饶号,學(xué)習(xí)的知識點很多,光靠大腦不可能全部記得住季蚂。
我們可以把平時記錄的技術(shù)點茫船、知識、好文章保存或者記錄在筆記上扭屁。
在這里推薦幾款我使用的不錯的筆記:
?有道云
?印象筆記
?OneNote
?語雀
推薦語雀:
MarkDown
Markdown 是一種可以使用普通文本編輯器編寫的標(biāo)記語言算谈,通過簡單的標(biāo)記語法,它可以使普通文本內(nèi)容具有一定的格式疯搅。
我一般都是使用 typora
濒生,這款界面簡潔埋泵,支持實時預(yù)覽幔欧,支持多種公式類型,支持TOC等標(biāo)簽這款先編寫好丽声,然后復(fù)制到自己喜歡的編輯器里進(jìn)行渲染格式礁蔗,最后發(fā)布文章到各個平臺。
推薦 Typora:
學(xué)會寫作
寫作是一個非常好的「進(jìn)階」 方式雁社。但是平時我們的程序員同學(xué)都會很忙有很多事浴井,導(dǎo)致了我們沒有太多的時間,同時也很難持續(xù)的進(jìn)行寫作霉撵,那么我們應(yīng)該要如何堅持寫作呢磺浙?
其實是無論堅持什么事情都不是一件容易的事情,寫作可以先從技術(shù)博客開始徒坡,后面也可以寫一寫生活中的事情撕氧。反正就是先讓自己寫起來,先寫起來之后養(yǎng)成習(xí)慣喇完,你會受益一輩子的伦泥。
一般都會選用上面所說的 Markdown 語法寫作,編輯工具也很多锦溪,在線的不脯、PC端的都有。
團(tuán)隊協(xié)作
我們開發(fā)過程中刻诊,無論哪一個項目都是很多人一起完成的防楷。任何編程工作不可能會讓你自己一個人完成,我們自己寫的的代碼必須與別人的交互或者混合则涯。就算很優(yōu)秀的程序員域帐,如果無法與別人協(xié)作赘被,都會給項目造成負(fù)面影響,對公司的正常運(yùn)營造成影響肖揣。
作為一個合格的程序員民假,我們更應(yīng)該學(xué)會與人合作。有一句話我記得非常清楚龙优,沒有一個人的成功羊异,每個人的成功都是建立在和別人合作的基礎(chǔ)之上的, 我們是一個整體彤断,需要共同面對困難野舶,一起分享成功。
下面的方法可以參考:
?分工合理,責(zé)任明確,模塊化
?高效的溝通機(jī)制(聊天軟件,任務(wù)面板,郵件等)
?定期檢查,及時調(diào)整(codeReview
宰衙、日報平道、周報、大小會議)
不斷學(xué)習(xí)
在日常開發(fā)中供炼,一定要學(xué)會去 github 等網(wǎng)站上一屋,學(xué)習(xí)一些別人的優(yōu)秀開源項目,學(xué)習(xí)別人的思想和構(gòu)架袋哼,學(xué)習(xí)別人的邏輯冀墨。
總結(jié)自己編碼過程中的局限性,只有在不斷的學(xué)習(xí)過程中涛贯,才能使的自己的技術(shù)不斷上升诽嘉。
身體是革命的本錢
程序員的工作,大多是坐在電腦屏幕前弟翘,一坐就是幾小時虫腋,缺乏鍛煉,我們當(dāng)中很多人都會得頸椎病稀余,還有得了脂肪肝悦冀,一些人得了腰間盤突出,以至于年紀(jì)輕輕滚躯,身體就不行了雏门。
所以,一定要愛護(hù)自己的身體掸掏,學(xué)會養(yǎng)生茁影,不僅是對自己負(fù)責(zé),也是對社會負(fù)責(zé)丧凤。
在這里給出的一點建議:
?保持充足的睡眠
?養(yǎng)成規(guī)律的飲食
?堅持健身
?多跑步走動
?合理的加班
?培養(yǎng)其他興趣
學(xué)會技術(shù)輸出和分享
將學(xué)到的編程知識寫下來募闲,并且將它分享給其他的程序員,將讓你變得更優(yōu)秀愿待。寫文章的好處是多方面的浩螺。你能夠分享想法靴患,并幫助全世界的程序員
我們應(yīng)該把每天學(xué)習(xí)的知識、技術(shù)要出,或者是看書的心得體會鸳君,用自己的方式表達(dá)出來。
多看官方文檔
官方文檔遠(yuǎn)比網(wǎng)上的各種博客和論壇等更適合入門學(xué)習(xí)患蹂。當(dāng)我們遇到很多問題和技術(shù)細(xì)節(jié)的時候或颊,認(rèn)真將官方文檔過一遍,你會發(fā)現(xiàn)很多問題和認(rèn)識模糊的地方都會清晰起來传于。
程序員都應(yīng)該掌握通過官方文檔去學(xué)習(xí)一個技術(shù)的能力囱挑,掌握了這項能力,你就具備了學(xué)會其他一切技術(shù)框架的基礎(chǔ)沼溜;而且最原始的官方文檔平挑,還能鍛煉你的自我學(xué)習(xí)總結(jié)能力。
培養(yǎng)自學(xué)能力
程序員無論合適都要有一顆保持學(xué)習(xí)的心系草,因為技術(shù)更新快通熄、需求變化快,我們不學(xué)習(xí)就會被淘汰悄但。
機(jī)會和挑戰(zhàn)只會分配給有準(zhǔn)備的人棠隐,當(dāng)我們有機(jī)遇能進(jìn)更好的公司的時候石抡,還是需要依靠自身的硬實力的檐嚣,這個時候如果我們長期自學(xué)積累知識的話,相信都可以把握住任何機(jī)會的啰扛。
我認(rèn)為自學(xué)應(yīng)該從這幾方面入手:
? 先確定好當(dāng)前的方向
? 做好長期吃苦的準(zhǔn)備
? 有規(guī)律有目的型的學(xué)習(xí)
? 在一個安靜的地方學(xué)習(xí)
? 利用好現(xiàn)有的**網(wǎng)絡(luò)資源與書籍****
英語水平
對于我們來說嚎京,因為技術(shù)文檔都是英文的,雖然閱讀別人的文檔可以通過翻譯成中文文檔來查看隐解,但是一味相信翻譯并不可取鞍帝,畢竟有錯誤和疏漏有時候都不知道。
而且我們編程每天都在和英語打交道煞茫,有更好的英語水平帕涌,對我們代碼的命名等等都會有很大的幫助。
擴(kuò)展人際關(guān)系
程序員是一個長時間在電腦旁邊的人類续徽,我們的業(yè)余時間不多蚓曼,周六日可能還加班,所以封閉性很強(qiáng)钦扭。
但是我們一定要抽出時間來維護(hù)自己的人脈管理纫版。本身壓力也比較大,有了更多的朋友的話客情,我們閑時也可以一起約出來其弊,聊聊天癞己,談?wù)勎磥淼陌l(fā)展。每個人的格局都不一樣梭伐,多多交流痹雅,才能不斷進(jìn)步。
下面我給大家說一下我是怎么維護(hù)自己的人脈:
? 要學(xué)會主動聯(lián)系
? 多參加一些社交活動
? 向優(yōu)秀的人多取經(jīng)
? 線上線下都可以認(rèn)識
良好的邏輯思維
邏輯思維能力是我們學(xué)習(xí)糊识、工作练慕、以及生活中必不可少的一種能力。
擁有良好的邏輯思維技掏,有助于我們高效地學(xué)習(xí)铃将,工作,以及生活哑梳。
總之劲阎,練好邏輯思維,可以讓我們變聰明鸠真、變自信悯仙,脫穎而出。
? 結(jié)構(gòu)化思維:把事物組成框架吠卷,分類锡垄、有序的整合起來
? 系統(tǒng)化思維:整體考慮,注重每一個聯(lián)系祭隔。
? 打破定勢思維:要學(xué)會創(chuàng)新货岭,增加求知欲。
? 情緒控制:合理控制自己的情緒疾渴。
? 換位思考:發(fā)生事情沖突千贯,也要在別人角度考慮。
時間管理能力
時間就是金錢搞坝,效率就是生命搔谴,一點也不過。我們現(xiàn)在這個社會大部分人都有拖延癥桩撮,該如何解決呢敦第?
其實現(xiàn)在影響我們最大的就是手機(jī)了,相比大部分都會一有閑暇時間就會大有手機(jī)上的娛樂軟件(短視頻之類)來打發(fā)時間店量,避免這樣芜果,我們就需要一些時間管理工具來改善。
給大家介紹一些我覺得不錯的時間管理工具:
? 番茄 ToDo
? Forest 專注森林
? 滴答清單
? 小日常
? Pendo
? 塊時間
? 極簡代辦
? Todolist
最后
哈哈垫桂,不好意思师幕,因為很久沒更文,所以這一篇就寫的有點多了,也算是補(bǔ)上欠下的文章霹粥。但是以上列出來的這些清單我相信你用心讀完后灭将,肯定還是會有所收獲的。
的確后控,軟件開發(fā)最重要的技能是提升技術(shù)庙曙,只要完成任務(wù)即可,但是一味的為了完成公司代碼而編程我覺得并不可取浩淘。
我們也要為自己的未來考慮捌朴,畢竟擺在我們面前的 35 歲抉擇是遲早會到的,所以不斷提升自己的各方面技能才能起到未雨綢繆的作用张抄。
最后一句話砂蔽,送給大家:硬實力決定下限,軟實力決定上下限署惯。
編碼之外的軟實力也是我們不斷前進(jìn)的源源動力左驾,一起加油吧!