局部css選擇器,Python需要學哪些基礎(chǔ)?
作為Python語言的愛好者及工作者,我認為其實Python是比較好入門的語言之一了,對于新手比較友好,要是做一些比較簡單的應(yīng)用還是比較容易的。
首先,要先學會Python的基本語法,比如for、while循環(huán),構(gòu)造函數(shù),基本的輸入輸出,捕獲異常,文件的基本操作等。
學習過基本語法后,就可以去選擇感興趣的方向了,眾所周知,Python語言開發(fā)速度特別快,做一個項目其他語言需要幾十行甚至幾百行的代碼Python幾行就可以搞定,其根本原因就是別的語言需要重復(fù)的造“輪子”的過程,而反觀Python,其本身就有著強大的支持庫,省去了重復(fù)造輪子的過程,幾乎在所有需要的項目中,Python都會有至少一個庫進行支持,比如你要學習爬蟲方向,那么可以先用requests庫配合xpath模塊進行練習抓取網(wǎng)頁數(shù)據(jù),用循環(huán)語句將抓取到的數(shù)據(jù)進行篩選,再用pymysql模塊將抓取到的數(shù)據(jù)進行保存到mysql數(shù)據(jù)庫中,這樣就完成了一次簡單爬蟲操作,熟練后就可以用爬蟲屆的扛把子——Scrapy框架進行爬取內(nèi)容了,進行各種分布式爬蟲操作,讓你感受飛一般的感覺!除了爬蟲之外,如果你想要開發(fā)一個圖形用戶界面,可以學習Python的Tkinter來開發(fā)圖形用戶界面,講之前我說的那些操作都放到圖形界面中,是不是感覺很棒?這些東西都是很方便操作的,一個簡單爬蟲甚至幾行代碼就可以完成,開發(fā)完成一個小應(yīng)用可能也就用幾十行代碼就可以完成啦,開發(fā)其他小工具也是很簡單的喲!!!
如何系統(tǒng)的學習JAVA?
玩Java多年的老司機帶你上車全面系統(tǒng)學習Java,并且還能教你如何學習才能在今年拿到一份不錯的offer。
說到系統(tǒng)全面,就是以目前絕大部分公司招聘要求的知識內(nèi)容為基準,畢竟我們學習Java都是為了高薪工作,《史記》中說”天下熙熙皆為利來,天下攘攘皆為利往“,為了高薪工作而學習Java技術(shù),這都是人之常情,也是大部分人奮斗的目標。
我們先看看市場上招聘Java程序員都需要哪些技術(shù):
大家看了上面三家的招聘要求是否發(fā)現(xiàn),目前作為初級Java工程師的要求都是差不多的,主要框架就是SpringMVC、Mybatis、SpringBoot、SpringCloud為主。而數(shù)據(jù)庫是MySQL和Oracle,一般中小型公司是用MySQL,而稍微規(guī)模稍微大一點的公司則是Oracle為主,以及Web相關(guān)的基礎(chǔ)內(nèi)容和一些如git、Maven、SVN工具的使用。
所以我們必須先了解目前市場都是需要學習什么技術(shù),你所學的知識要有用武之地才行,緊貼時代的前沿。所謂全面系統(tǒng)的學習Java,我們首先要了解自己應(yīng)該學習哪些內(nèi)容。
全面系統(tǒng)的Java內(nèi)容如下:一、JavaSE基礎(chǔ)篇
JavaSE就是一種標準版,是Java語言的基礎(chǔ)部分,Java衍生出來的各種框架(如Spring系列)各種產(chǎn)品都是基于JavaSE標準,JavaSE是Java向上發(fā)展的基礎(chǔ),Java任何高級產(chǎn)品的底層基礎(chǔ)都是JavaSE,通俗來講這是所有孩子的”爹“。JavaSE如果學不好,理解不透徹,后面學習框架時就有如天書一般,所以JavaSE這部分的重要性是不言而喻的,希望各位初學者銘記。后面學習框架時就有如天書一般,所以JavaSE這部分的重要性是不言而喻的,希望各位初學者銘記。推薦學習教程:https://www.bilibili.com/video/BV1rp4y1X7PDPS:JavaSE的內(nèi)容非常龐大,任何一套JavaSE教程都不會把所有的方法講一遍,只會挑平時工作中常用的內(nèi)容來講解,所以JavaSE里面的內(nèi)容很多都是課后自己在API文檔中慢慢了解的,你自己一定要學會主動學習,不能坐以待斃。推薦學習書籍:Java核心技術(shù)這本書是老美寫的,出版以來,一直備受廣大Java程序設(shè)計人員的青睞,暢銷不衰,是Java經(jīng)典書籍。囊括了Java平臺標準版JavaSE的全部基礎(chǔ)知識,提供了大量完整且具有實際意義的應(yīng)用實例,詳細介紹了Java語言基礎(chǔ)知識、面向?qū)ο蟪绦蛟O(shè)計、接口與內(nèi)部類、事件監(jiān)聽器模型、swing圖形用戶界面程序設(shè)計、打包應(yīng)用程序、異常處理、登錄與調(diào)試、泛型程序設(shè)計、集合框架、多線程等內(nèi)容。(這本書是每個Java程序員必看的書籍)二、數(shù)據(jù)庫篇數(shù)據(jù)庫是學習Java語言必學的一項內(nèi)容,常見的數(shù)據(jù)庫就是MySQL和Oracle這兩種,作為初學者一般都是學習MySQL為主,一般情況下中小型企業(yè)都會選擇MySQL數(shù)據(jù)庫,比較大型的互聯(lián)網(wǎng)公司會選擇用Oracle,而學習Oracle相對于MySQL也要復(fù)雜一些,建議是主要學習MySQL數(shù)據(jù)庫,Oracle作為了解即可。學習數(shù)據(jù)庫較為簡單,基本的操作就是增刪改查。三、Web開發(fā)Web前端內(nèi)容:HTML/CSS/JavaScript/(前端頁面)注意:Java后端開發(fā)可以不用過多關(guān)注HTML頁面及CSS的處理,但是最起碼要會用簡單的HTML,JavaScript是必需要會的,因為Javaweb后端程序員畢竟要接觸使用AJAX方式處理數(shù)據(jù)及顯示。當然如果只關(guān)注服務(wù)器端實現(xiàn)而不考慮任何用戶界面,則HTML、CSS、JavaScript都不用關(guān)注,但是完全脫離前端的開發(fā)現(xiàn)在雖然也不少,但是絕對不關(guān)心前端是不可能,尤其是JavaScript,但是前端卻可以完全不關(guān)心服務(wù)器后臺的任何實現(xiàn)。推薦學習書籍:《JavaScript DOM編程藝術(shù)》(第二版)這本書作為被大家推薦的最多的前端入門書籍是有道理的。他能真正讓大家了解dom腳本編程,或是說前端編程技術(shù)背后的思路和原則。對于初學者來說,這本書沒有任何門檻,按部就班跟著書籍實例編寫代碼即可。我們會知曉如何對瀏覽器元素操作和掌控,會學會如何實現(xiàn)簡單的頁面效果。這種簡單易得的成就感是一個編程語言入門時最難能可貴的體驗。JavaEE內(nèi)容:Servlet/JSP雖然現(xiàn)在網(wǎng)上在傳JSP很少用了,可能是被一些模板或JS AJAX方式代替了一些,但是我認為還是應(yīng)該接觸一下,萬一要用到不會怎么辦,而且它是Java EE的動態(tài)網(wǎng)頁實現(xiàn)標準組件。學習JSP過程也能更好的幫助我們理解web會話的過程,掌握web會話都有哪些我們必需知道的。如果學習Javaweb、JSP都不接觸那就相當于學習使用Springboot而一點不接觸SpringFramework一樣,豈不是稀里糊涂。包括開發(fā)Javaweb 我們必需知道的概念諸如Web應(yīng)用上下文,請求對象,響應(yīng)對象,HttpSession,Cookie等都是在接觸學習JSP和Servelt中體現(xiàn)的,還有一些比較少見的EJB JSF JMS 以及 Java Felix等。一些初學者不清楚這些難免會有誤區(qū),尤其是有些較成熟的工程師也這么說,我只能說他們很無知,只是代碼機器而已,其實對于應(yīng)用開發(fā)設(shè)計也就稀里糊涂,人云亦云罷了。
永遠沒有被淘汰的技術(shù)也沒有永遠流行萬能的技術(shù),要看在什么環(huán)境和場合應(yīng)用,符合我需求的技術(shù)和工具就是好的,就是對的。四、高級框架1、Springframework 核心IOC容器。
2、Spring boot 在Spring基礎(chǔ)上的更全面提升效率的Spring工具。3、ORM 框架當今流行使用較多的是Mybatis 和 MP(Mybatis插件),Hibernate是可選性學習的。4、模板技術(shù),比較成熟的Freemarker。5、Spring Cloud 微服務(wù)框架,Spring Cloud提供的全套的分布式系統(tǒng)解決方案。
五、工具
maven 是構(gòu)建管理項目的工具,svn 和git是團隊協(xié)作開發(fā)的項目源代碼及相關(guān)文檔資料管理工具,需要學習者初步掌握其應(yīng)用。像Tomcat,jetty,resin,JBoss,GlassFish 等都是部署運行Java web應(yīng)用的服務(wù)器。
以上就是初學者大概學習的內(nèi)容,我是盡量站在初學者的角度來說的,沒有寫得特別復(fù)雜,怕初學者看不懂,沒有實質(zhì)性的幫助。所以我盡量用白話把話說的簡單一些,給大家羅列出主要學習的Java知識點。知道了Java要學習的大概內(nèi)容,下面就是怎么才能用最好的方式把Java學好,從而達到就業(yè)的水平,首選我們應(yīng)該了解一下目前想要達到找到工作的水平,應(yīng)該是怎樣的。Java學到什么程度才能達到就業(yè)的水平:
對于大多數(shù)初學Java的同學而言,最關(guān)心的莫過于我學要學習哪些和學到什么程度才能找到相關(guān)的Java研發(fā)工作崗位。
不同的軟件公司對研發(fā)人員的水平要求存在一定的差異,如果從大多數(shù)中小型企業(yè)來看能接受一個入職到本企業(yè)的IT技術(shù)人員通常需要具備以下能力。1 理解掌握Java核心面向?qū)ο蟮脑O(shè)計思想和代碼構(gòu)建,能以面向?qū)ο蠓绞皆O(shè)計編寫業(yè)務(wù)功能;2 熟練掌握至少兩種數(shù)據(jù)庫的開發(fā),如Oracle,mySql,能熟練編寫基本常用及高級的SQL語句;3 必需掌握并熟練應(yīng)用Springframework IOC容器,深入了解IOC及AOP概念并應(yīng)用,使用MVC實現(xiàn)對web 請求做出處理;4 熟練掌握Java處理數(shù)據(jù)庫的ORM框架myBatis,JDBCTemplate,對Hibernate也應(yīng)有所了解;5 熟練應(yīng)用Spring 增強工具集合Spring boot;6 至少熟練使用Eclipse及IDEA集成開發(fā)工具構(gòu)建應(yīng)用程序;7 能夠基本掌握MVN GIT Maven 在項目中的使用;8 前端開發(fā)必需掌握JavaScript和常用的JS框架
以上這些都是中小型軟件企業(yè)的入職基本要求,如果你能夠達到這個水平,找到一份Java工作應(yīng)該是不難的。推薦的學習方式:系統(tǒng)視頻教程+書籍輔助+有人指導(dǎo)視頻教程:對于Java初學者來說,看視頻學習也是最普通的方式,視頻教程會把工作中常用的知識進行講解,而且視頻一般都是分章分節(jié),每一個小節(jié)都只講一個知識點,學習起來較為明確。但是視頻教程盡量要完整,最好是一整套視頻學習。書籍輔助:書籍便于對理論知識的補充,以便更容易理解Java面向?qū)ο蠛诵脑O(shè)計理念和代碼實踐功能。PS:但是大部分人都沒有耐心看不下去書,所以大部分人都是只看視頻教程學習。如果自己能看的下去就看,看不下去就不看。有人指導(dǎo):大部分人都不可能全靠自己的能力把Java學的特別好,因為你不了解這個行業(yè),也不知道怎么學,完全零基礎(chǔ)自學Java想要找到工作,概率極低。所以建議如果真的想要做這行,盡量找人去帶帶你,有不懂的問題可以直接請教,少走彎路,提高效率。學習的質(zhì)量決定以后工作的薪資以及起點,所以還是應(yīng)該重視起來。項目的重要性
很多Java初學者看完一些視頻,學過一段時間就說自己“會了”。這里我需要給大家糾正一個問題,希望每個學習Java的知友都能明確學習編程的中心是什么。 其實在我看來,學習編程從來都不存在會不會這樣的說法。學習編程不同于初中學的數(shù)學、物理、化學,記住一些公式,做同樣一種類型的習題,就證明類似的題型你會做了。 編程只講技術(shù)能力是什么水平、什么級別的,最能證明技術(shù)水平處在什么階段的,就是在做項目的過程中,研發(fā)好的互聯(lián)網(wǎng)產(chǎn)品,寫代碼的質(zhì)量怎么樣,排錯能力怎么樣,找BUG的能力怎么樣,構(gòu)思功能模塊整體布局的能力怎么樣等等。 做作為初學者想要達到入門的水平,就是自己具備了一些簡單項目的編碼能力,初學者最重要的一點就是培養(yǎng)自己的編程思維,,每一個程序都是不一樣的,你不可能都背下來,學編程也不是靠死記硬背的,你只有能去獨立編碼寫一些東西的時候,才有就業(yè)的就會。所以做項目的能力才能去衡量一個學習的水平處在什么階段,而往往那些嘴上說“會了”的人,往往沒寫過多少代碼,也一個項目做不了出來,這就是紙上談兵,完全曲解了學習編程到底在學什么,也不知道應(yīng)該往哪里去。所以一個Java初學者在學習的整體過程中,必須要有兩個能拿得出手,能寫在簡歷上的項目作為找工作的資本,并且要對于這兩個項目的前前后后相當了解,才可能最后面試成功,一個初學者在學習完Java所有內(nèi)容后,如若還達不到可以做簡單項目的水平,那么他整個學習過程還是白費,沒有達到最終的學習目的,就是學習質(zhì)量不過關(guān)。所以項目的重要性希望大家都明確,因為有太多Java初學者不知道最后學習的目的是什么,最后白白的浪費時間。學習心態(tài):學習編程一定不是一個簡單的事情,換句話說它還是挺困難的,畢竟能出去找到工作,就是少則五六千,多則上萬的工種。這些知識都不是隨隨便便就是任何一個人都能學會的。關(guān)于這個學習心態(tài),希望提示大家要把重心放到“學習”這件事上,因為我發(fā)現(xiàn)有很多Java初學者都是像“完成任務(wù)”一樣去學習,所謂完成任務(wù)就是“我把這些視頻看完就能找到工作嗎”“我把這些都學完就能找到工作嗎”學完并不等于“學會”,這是兩種不同的概念。你到底理沒理解?
你到底能不能應(yīng)用起來?
你到底用沒用心?你自己應(yīng)該是最清楚的,我發(fā)現(xiàn)那些把學習當做完成任務(wù)一樣去對待的,這樣的人沒有一個是有耐心的,自己在心里欺騙自己“把這些視頻看完我就能找到工作”,到了最后自己就逐漸明白,完全是自欺欺人,最后放棄說自己不適合學這個。其實揭開這些人的面具真相就一個:他們沒有耐心學習,也不喜歡學習,這是以前經(jīng)歷造成的,是多年的習慣導(dǎo)致的。所以正確的學習心態(tài)一定是把關(guān)注點放到學習這件事本身,你要學會這些知識,這些內(nèi)容,這些技術(shù),這是需要一天一天逐漸積累起來的,并不是短時間就可以達到什么結(jié)果。PS:如果你對于學習沒什么耐心,沒什么興趣,我勸你不要來學習編程,學習編程絕對是一個耐心的活,也是需要不斷學習和充電的行業(yè)。或者說已經(jīng)到了信息時代,不愛學習的人,很難有耐心去學習知識的人,在信息時代是混不下去的,任何行業(yè)都是如此,不學習不進步不緊貼時代的人就一定會被淘汰。最終自學Java能就業(yè)的人基本具備以下幾點:
1、有超強的學習耐心及進取心
2、手不懶,代碼寫的足夠多,熟能生巧
3、有一定的學習能力,善于自學善于自己解決問題
4、可以獨立寫一些簡單的項目
以上內(nèi)容均由本人手寫而成,完全站在Java初學者的角度來說,就是希望能用通俗易懂的語言讓大家清晰的明白學習Java全面系統(tǒng)的學習內(nèi)容,以及應(yīng)該達到什么程度才能拿到一份Java工作的offer,希望可以給大家?guī)韼椭?/p>
如各位初學者對于學習Java還有相關(guān)的一切疑惑與難題,皆可隨時私信我咨詢,本人接觸Java語言將近20年時間,敢說自己對于Java的了解是精通的水平,如能盡自己的綿薄之力為大家提供一些微薄的幫助,不勝榮幸。
JS設(shè)置CSS樣式?
javascript改變CSS樣式分為局部和全局,分別如下: 一、局部改變樣式 有三種方法:直接改變樣式、改變className和改變cssText 改變className: document.getElementById('obj').className="…" 改變cssText:document.getElementById('obj').style.cssText="width:20px; border:solid 1px #f00;"; 改變直接樣式: document.getElementById('obj').style.backgroundColor="#003366″ 二、全局改變樣式 通過改變外鏈樣式的的href的值實現(xiàn)網(wǎng)頁樣式的實時切換,也就是"改變模板風格"。 首先需要賦予需要改變的目標一個id,如 代碼如下: <link rel="stylesheet" type="text/css" id="css" href="firefox.css" /> 調(diào)用時很簡單,如 代碼如下: <span onclick="javascript:document.getElementById('css').href='ie.css'">點我改變樣式</span>
有什么編程的好習慣建議嗎?
和大家分享一些寫好代碼的習慣:
一.良好的編碼規(guī)范
編碼規(guī)范我認為是考量程序員是否合格的一個重要因素,因為寫代碼不規(guī)范真的會讓團隊的整體效率都降低。好的編碼規(guī)范可以指導(dǎo)開發(fā)人員更加高效、高質(zhì)量地進行開發(fā),呈現(xiàn)給用戶體驗好、性能優(yōu)、穩(wěn)定性佳、安全性高的產(chǎn)品。那么說起代碼規(guī)范,代碼規(guī)范具體都指哪些方面的規(guī)范呢?1.命名規(guī)范
文件、資源、方法、接口、屬性、變量所有涉及到需要自己定義的部分都需要按照規(guī)范來命名,不然整個項目長期堆下來就是一團糟,維護起來相當?shù)睦щy。2.格式規(guī)范
縮進排版規(guī)范,我給大家推薦一個工具,checkStyle(AS和Idea都有這個工具)。AS checkStyle 插件可以通過自定義配置文件來統(tǒng)一團隊的代碼風格和代碼規(guī)范,降低團隊的交流成本,一般配合 save actions Reborn 使用更佳。關(guān)于checkStyle的配置文件網(wǎng)上也不少,大家自行去網(wǎng)上搜索,不單獨贅述了。3.邏輯規(guī)范
如:相同方法要抽取到工具類中以供全局調(diào)用、一個方法不要寫幾千行,方法過于復(fù)雜就要再單獨抽離方法等。4.注釋規(guī)范
注釋這部分內(nèi)容文章第二章節(jié)會單獨說明。5.其他規(guī)范
如:一行聲明一個變量、所有的變量必須在聲明時初始化、for循環(huán)不要調(diào)用線程、項目中禁止使用過多的靜態(tài)變量等等示例:我自己寫項目遵循的開發(fā)規(guī)范(去華為云開發(fā)者社區(qū)、csdn等優(yōu)秀社區(qū)都可以搜索相關(guān)的開發(fā)規(guī)范)1)工程包命名
工程包名com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).activity 放工程的主Activity 以及BaseActivitycom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).activity.list 在activity下面建一個文件夾list放所有的ListActivitycom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).adapter 放和主activity對應(yīng)的adapter 以及通用adaptercom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).adapter.item 放和listAcitivity對應(yīng)的Adaptercom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).bean 放javabean類com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).util 放各種工具類 (圖片,字符,時間,dalog 等)com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).net 放和服務(wù)器交互的類com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).view 放 自定義view的類com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).db 放 本地數(shù)據(jù)庫操作相關(guān)的類當然 上面的公司名稱可以換成別的 ,盡量用簡寫或者英文 比如qq: 就可以寫成 com.tencent.qq.activity,大家明白這個意思就好。2)類文件命名
1. activityactivity 我習慣分為兩種考慮, 一種是列表數(shù)據(jù)的, 第二種是普通的activity 。這么分有個好處就是找這個類的時候方便。當你看到這個界面時列表數(shù)據(jù)的時候 直接搜索listActivity就能過濾掉一大部分,然后再篩選會簡單很多。這個大家從上面我定義的包名中就看出來了。所以 activity的命名是 : 功能簡寫+Activity功能簡寫+ListActivity登錄:LoginActivity用戶列表:UserListActivity2. layout xml全部小寫,用_隔開 xml命名 分為幾種主Activity用到的xml : activity_activity名稱簡寫.xml activity_login.xmlinclude的xml:include_功能簡寫.xml include_top_search.xmladapter中用到的xml:item_adapter名稱簡寫.xml item_user_list.xmldialog用到的xml:dialog_功能簡寫.xml dialog_show_tips.xml自定義view用的xml :view_view名稱簡寫.xmlview_header.xml 這個就是共用的view 也可以用common_view名稱簡寫.xml替換xml中 控件id命名:模塊名稱_view的邏輯名稱_view縮寫用戶名EditText : login_username_et登錄確認Button: login_confirm_btnLayoutView lvRelativeView rvEditText etTextView tvButton btnImageButton imgBtnImageView ivCheckBox cbxRadioButton rbtn其他的類似,不一一列舉了。這些都不是規(guī)定死的 ,大家自己定義,前提能區(qū)分開不同的控件并且能讓別人看懂。3.工具類等工具類功能簡寫+Util : DialogUtil.java 、 TextUtil.java3). 圖片等資源文件命名
背景圖片: bg_功能_說明 bg_login_commit圖標圖片: icon_功能_說明 icon_tab_set功能也可以換為 acvitiy名稱簡寫共用的圖片 前面都加 common4).程序中變量 常量命名
在說這個之前要給大家補充一下 標識符命名。就是變量和常量名字我一般就用兩種:1 駝峰(Camel)命名法:又稱小駝峰命名法,除首單詞外,其余所有單詞的第一個字母大寫。protected TextView mWatchCountInfoTv;protected TextView mNicknameTv;protected TextView mLocationTv;protected TextView mVideoTopicTv;protected TextView mVideoTitleTv;2.下劃線命名法:單詞與單詞間用下劃線做間隔。private static final int MSG_SHOW_GIFT = 20;private static final int MSG_SHOW_EXPRESSION = 21;private static final int MSG_SHOW_RED_PACK = 22;private static final int MSG_SHOW_JOIN_USER = 23;靜態(tài)常量名稱都是 功能說明_類別 統(tǒng)一下劃線命名法private static final int MSG_SHOW_GIFT = 20;private static final int MSG_SHOW_EXPRESSION = 21;private static final int MSG_SHOW_RED_PACK = 22;private static final int MSG_SHOW_JOIN_USER = 23;變量這個分為兩種全局變量、局部變量,全局變量 以m開頭,局部變量不用。全局變量:protected VideoEntity mCurrentVideo;protected int mShareType;protected MyHandler mHandler;protected int mLikeCount;protected int mCommentCount;局部變量:TextView tview = new TextView();Button button = new Button();上面已經(jīng)介紹過 xml中id命名的方法了所以變量和那個規(guī)則基本一致: 功能邏輯名稱簡寫+view 簡寫private ImageView mPhoneVerifyIv;private Button mConfirmBtn;private EditText mPhoneNumberEt;private TextView mSelectCountryNameTv;private TextView mSelectCountryCodeTv;之前寫的一篇文章【軟件開發(fā)規(guī)范六】《Android開發(fā)編碼規(guī)范》二.寫好代碼注釋
代碼注釋我認為是很有必要的,這里說的代碼注釋是那些必要的,一些簡單的功能沒有必要加太多的注釋說明。舉個簡單的例子:某項目中有一個項目重點工程列表功能,后來又新增了在施項目列表功能,再后來又新增了停工項目重點列表功能,這個時候一般的開發(fā)人員都會考慮復(fù)用,就是用一個類,不用寫三個類,因為列表內(nèi)字段都很類似,這個時候開發(fā)人員直接用的一個類,然后我貼一下代碼大家感受下有注釋和無注釋兩者區(qū)別:無注釋:有注釋:很明顯加上注釋以后,大家一眼就能看出這個類的作用,三個功能列表都是這個類的代碼,后期維護起來會非常方便,如果不加注釋,可能只有開發(fā)這個功能的開發(fā)人員清楚,其他人或者后期進入公司維護這個項目的開發(fā)人員只能通過讀代碼分析出三個功能是復(fù)用的一個類,很明顯效率就會降低很多,所以在開發(fā)過程中一定要養(yǎng)成一個寫注釋的習慣,代碼注釋相當于產(chǎn)品說明書,太重要了。寫代碼注釋要注意的幾個問題:盡量減少不必要的代碼注釋,說的直白點就是大家都知道的東西就沒必要加注釋,加了就是畫蛇添足類似這種的就屬于畫蛇添足,我看代碼能很直觀的知道這是點擊登錄后調(diào)用的邏輯,不需要解釋,寫了感覺一點意義沒有。注釋一定寫清楚作用,對于特殊處理的邏輯,要注釋這樣處理的原因代碼的注釋不是越詳細越好,概況的說清楚這段代碼的作用即可。三.review重構(gòu)代碼
review代碼剛?cè)胄械臅r候就聽別人說過,但是在前兩家公司的時候,基本都是各做各的,每個人分工不同,也就是說自己寫的代碼自己維護,也不涉及到其他人,真正讓我知道review代碼的是在第三家公司的領(lǐng)導(dǎo)。當時我在第三家公司工作的一年多時間,從入職第一天寫的代碼到我離職的前一天,我寫的所有的代碼,我的領(lǐng)導(dǎo)都會幫我review一遍,每次review完我寫的代碼,他都會把我叫過去和我說哪里寫的不行、哪里需要改、怎么改、參照哪處的代碼。也是在那家公司項目組領(lǐng)導(dǎo)的指導(dǎo)下,我開發(fā)水平有了很大的提升,到現(xiàn)在回想起來,內(nèi)心非常感謝他。可以說是那個領(lǐng)導(dǎo)幫我養(yǎng)成了review代碼的習慣,剛?cè)サ臅r候被他說過幾次,我每次寫完也會review一遍,最開始我僅僅是不想再被他吐槽寫的爛,因為大家都懂的,程序員就怕別人說自己菜,后來時間長了發(fā)現(xiàn)寫完功能后review一遍代碼,然后修改一下會讓代碼規(guī)范整潔很多;其次有些功能會加深理解。后來我離職去了下一家公司也一直保留寫完代碼后再重新review一遍的習慣。review代碼幾點小的建議:做完一個小功能后或者發(fā)布一個版本后review一遍,這個時間點比較適合,新功能還在討論需求中,會有空余時間可以用來review。代碼review都看哪些東西,我其實一般主要就看三方面:代碼規(guī)范 命名、格式、易讀性等代碼涉及到的一些算法或者邏輯等代碼是否可整合,比如同一類的方法是否可以增加參數(shù)復(fù)用、自定義組件是否可以重新封裝增強擴展性。當然如果系統(tǒng)性的review代碼不僅僅這三點,大家根據(jù)自己實際情況來做。四.多學習優(yōu)秀的源碼
如何讓自己的代碼寫的看起來很高大上、有水平、很規(guī)范。很多老菜鳥一般都會脫口而出:看源碼啊...這個看源碼沒毛病,看源碼肯定會有所收獲,源碼基本都是標準規(guī)范化的模板,但是說實話,我真的沒咋認真讀過那些底層源碼,除了剛學習java那會老師說必須仔細看API,去源碼找方法,后來基本沒咋看過源碼,因為我真的看不下去。我一般都喜歡帶著問題或者有一定目的去做事情,你就直接讓我看一堆源碼,我容易犯困。我個人習慣是看那些大廠的DEMO,比如我做云直播,我就看XX團隊的DEMO的代碼是怎么寫的;我做推送我就看某推送團隊的API文檔說明,學習文檔說明里面附帶的DEMO源碼是如何寫的。所以個人習慣看大廠發(fā)布的最新版本的DEMO源碼,因為首先我能看懂,其次能直接幫我解決問題。再后來我就看github上面主流的一些開源DEMO,都是star高的開源項目,這些項目都有一個共同點,就是代碼都寫的很規(guī)范。學習代碼規(guī)范的同時還能順便了解項目中都依賴了哪些新的框架、采用了哪些新的技術(shù),總而言之就是找適合自己的優(yōu)秀的項目去學習。五.保持平和的心態(tài)
程序員這個職業(yè)其實對個人的心態(tài)要求很高,控制不好自己的心態(tài)真的不太適合做這行工作。因為每天都會面對各種復(fù)雜的問題,做不完的功能,改不完的BUG...描述一個場景:你正在改一個特別難處理的bug,但是開發(fā)環(huán)境卻在這時候出問題了,配置了半天還是解決不了,開發(fā)環(huán)境還是一直有問題,恰好這時候產(chǎn)品經(jīng)理突然過來和你說之前另外一個功能模塊的需求設(shè)計需要推翻重新做并且需要盡快加班改完。產(chǎn)品經(jīng)理通知所有相關(guān)人員參加新需求討論交底會議,會上研發(fā)經(jīng)理要求大家晚上留下來加班討論改版后的系統(tǒng)架構(gòu)設(shè)計和數(shù)據(jù)庫相關(guān)改動設(shè)計,此時你的內(nèi)心想必是有很多神獸飄過...很多開發(fā)的小伙伴碰到這種情況,心態(tài)就發(fā)生變化了,bug也改不下去,功能也不想做,即便硬著頭皮去改去做也會有很多問題,因為心態(tài)沒調(diào)整好,邏輯沒有梳理清晰,做出來的功能一定是問題一大堆。調(diào)整心態(tài)的方法:1.站起來活動活動,讓自己冷靜冷靜。2.去各種摸魚群里面吹吹水、吐槽吐槽,都可以緩解我們緊張煩躁的情緒。3.去各種技術(shù)社區(qū)去瀏覽瀏覽文章或者寫寫文章。總之就是做一些事情,先轉(zhuǎn)移一下注意力,先把自己心態(tài)調(diào)整好,這樣才能高效的投入到工作中。總結(jié)
代碼是一環(huán)扣一環(huán)的,從邏輯、可讀、簡潔、效率、維護,這些標準都決定了代碼的好壞。從看到學再到寫,在提升自己代碼能力的同時,還要注意代碼的質(zhì)量優(yōu)化,一個好的程序,是由好的代碼模塊組合而成的,而在我們寫程序的時候就應(yīng)該多加考慮和設(shè)計,這樣不僅是對代碼負責也是對自己負責,寫好優(yōu)質(zhì)代碼是一個程序員應(yīng)盡的責任。本文分享自華為云社區(qū)《【云駐共創(chuàng)】為了寫好代碼,你堅持了哪些好習慣?》,作者:再見孫悟空_。