怎樣編程生存游戲,編程對(duì)你來說有什么樂趣?
和大家分享一些寫好代碼的習(xí)慣:
一.良好的編碼規(guī)范
編碼規(guī)范我認(rèn)為是考量程序員是否合格的一個(gè)重要因素,因?yàn)閷懘a不規(guī)范真的會(huì)讓團(tuán)隊(duì)的整體效率都降低。好的編碼規(guī)范可以指導(dǎo)開發(fā)人員更加高效、高質(zhì)量地進(jìn)行開發(fā),呈現(xiàn)給用戶體驗(yàn)好、性能優(yōu)、穩(wěn)定性佳、安全性高的產(chǎn)品。那么說起代碼規(guī)范,代碼規(guī)范具體都指哪些方面的規(guī)范呢?1.命名規(guī)范
文件、資源、方法、接口、屬性、變量所有涉及到需要自己定義的部分都需要按照規(guī)范來命名,不然整個(gè)項(xiàng)目長期堆下來就是一團(tuán)糟,維護(hù)起來相當(dāng)?shù)睦щy。2.格式規(guī)范
縮進(jìn)排版規(guī)范,我給大家推薦一個(gè)工具,checkStyle(AS和Idea都有這個(gè)工具)。AS checkStyle 插件可以通過自定義配置文件來統(tǒng)一團(tuán)隊(duì)的代碼風(fēng)格和代碼規(guī)范,降低團(tuán)隊(duì)的交流成本,一般配合 save actions Reborn 使用更佳。關(guān)于checkStyle的配置文件網(wǎng)上也不少,大家自行去網(wǎng)上搜索,不單獨(dú)贅述了。3.邏輯規(guī)范
如:相同方法要抽取到工具類中以供全局調(diào)用、一個(gè)方法不要寫幾千行,方法過于復(fù)雜就要再單獨(dú)抽離方法等。4.注釋規(guī)范
注釋這部分內(nèi)容文章第二章節(jié)會(huì)單獨(dú)說明。5.其他規(guī)范
如:一行聲明一個(gè)變量、所有的變量必須在聲明時(shí)初始化、for循環(huán)不要調(diào)用線程、項(xiàng)目中禁止使用過多的靜態(tài)變量等等示例:我自己寫項(xiàng)目遵循的開發(fā)規(guī)范(去華為云開發(fā)者社區(qū)、csdn等優(yōu)秀社區(qū)都可以搜索相關(guān)的開發(fā)規(guī)范)1)工程包命名
工程包名com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).activity 放工程的主Activity 以及BaseActivitycom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).activity.list 在activity下面建一個(gè)文件夾list放所有的ListActivitycom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).adapter 放和主activity對(duì)應(yīng)的adapter 以及通用adaptercom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).adapter.item 放和listAcitivity對(duì)應(yīng)的Adaptercom. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).bean 放javabean類com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).util 放各種工具類 (圖片,字符,時(shí)間,dalog 等)com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).net 放和服務(wù)器交互的類com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).view 放 自定義view的類com. 公司名稱簡寫.應(yīng)用名稱簡寫(拼音或者英文).db 放 本地?cái)?shù)據(jù)庫操作相關(guān)的類當(dāng)然 上面的公司名稱可以換成別的 ,盡量用簡寫或者英文 比如qq: 就可以寫成 com.tencent.qq.activity,大家明白這個(gè)意思就好。2)類文件命名
1. activityactivity 我習(xí)慣分為兩種考慮, 一種是列表數(shù)據(jù)的, 第二種是普通的activity 。這么分有個(gè)好處就是找這個(gè)類的時(shí)候方便。當(dāng)你看到這個(gè)界面時(shí)列表數(shù)據(jù)的時(shí)候 直接搜索listActivity就能過濾掉一大部分,然后再篩選會(huì)簡單很多。這個(gè)大家從上面我定義的包名中就看出來了。所以 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 這個(gè)就是共用的view 也可以用common_view名稱簡寫.xml替換xml中 控件id命名:模塊名稱_view的邏輯名稱_view縮寫用戶名EditText : login_username_et登錄確認(rèn)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圖標(biāo)圖片: icon_功能_說明 icon_tab_set功能也可以換為 acvitiy名稱簡寫共用的圖片 前面都加 common4).程序中變量 常量命名
在說這個(gè)之前要給大家補(bǔ)充一下 標(biāo)識(shí)符命名。就是變量和常量名字我一般就用兩種:1 駝峰(Camel)命名法:又稱小駝峰命名法,除首單詞外,其余所有單詞的第一個(gè)字母大寫。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;變量這個(gè)分為兩種全局變量、局部變量,全局變量 以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命名的方法了所以變量和那個(gè)規(guī)則基本一致: 功能邏輯名稱簡寫+view 簡寫private ImageView mPhoneVerifyIv;private Button mConfirmBtn;private EditText mPhoneNumberEt;private TextView mSelectCountryNameTv;private TextView mSelectCountryCodeTv;之前寫的一篇文章【軟件開發(fā)規(guī)范六】《Android開發(fā)編碼規(guī)范》二.寫好代碼注釋
代碼注釋我認(rèn)為是很有必要的,這里說的代碼注釋是那些必要的,一些簡單的功能沒有必要加太多的注釋說明。舉個(gè)簡單的例子:某項(xiàng)目中有一個(gè)項(xiàng)目重點(diǎn)工程列表功能,后來又新增了在施項(xiàng)目列表功能,再后來又新增了停工項(xiàng)目重點(diǎn)列表功能,這個(gè)時(shí)候一般的開發(fā)人員都會(huì)考慮復(fù)用,就是用一個(gè)類,不用寫三個(gè)類,因?yàn)榱斜韮?nèi)字段都很類似,這個(gè)時(shí)候開發(fā)人員直接用的一個(gè)類,然后我貼一下代碼大家感受下有注釋和無注釋兩者區(qū)別:無注釋:有注釋:很明顯加上注釋以后,大家一眼就能看出這個(gè)類的作用,三個(gè)功能列表都是這個(gè)類的代碼,后期維護(hù)起來會(huì)非常方便,如果不加注釋,可能只有開發(fā)這個(gè)功能的開發(fā)人員清楚,其他人或者后期進(jìn)入公司維護(hù)這個(gè)項(xiàng)目的開發(fā)人員只能通過讀代碼分析出三個(gè)功能是復(fù)用的一個(gè)類,很明顯效率就會(huì)降低很多,所以在開發(fā)過程中一定要養(yǎng)成一個(gè)寫注釋的習(xí)慣,代碼注釋相當(dāng)于產(chǎn)品說明書,太重要了。寫代碼注釋要注意的幾個(gè)問題:盡量減少不必要的代碼注釋,說的直白點(diǎn)就是大家都知道的東西就沒必要加注釋,加了就是畫蛇添足類似這種的就屬于畫蛇添足,我看代碼能很直觀的知道這是點(diǎn)擊登錄后調(diào)用的邏輯,不需要解釋,寫了感覺一點(diǎn)意義沒有。注釋一定寫清楚作用,對(duì)于特殊處理的邏輯,要注釋這樣處理的原因代碼的注釋不是越詳細(xì)越好,概況的說清楚這段代碼的作用即可。三.review重構(gòu)代碼
review代碼剛?cè)胄械臅r(shí)候就聽別人說過,但是在前兩家公司的時(shí)候,基本都是各做各的,每個(gè)人分工不同,也就是說自己寫的代碼自己維護(hù),也不涉及到其他人,真正讓我知道review代碼的是在第三家公司的領(lǐng)導(dǎo)。當(dāng)時(shí)我在第三家公司工作的一年多時(shí)間,從入職第一天寫的代碼到我離職的前一天,我寫的所有的代碼,我的領(lǐng)導(dǎo)都會(huì)幫我review一遍,每次review完我寫的代碼,他都會(huì)把我叫過去和我說哪里寫的不行、哪里需要改、怎么改、參照哪處的代碼。也是在那家公司項(xiàng)目組領(lǐng)導(dǎo)的指導(dǎo)下,我開發(fā)水平有了很大的提升,到現(xiàn)在回想起來,內(nèi)心非常感謝他。可以說是那個(gè)領(lǐng)導(dǎo)幫我養(yǎng)成了review代碼的習(xí)慣,剛?cè)サ臅r(shí)候被他說過幾次,我每次寫完也會(huì)review一遍,最開始我僅僅是不想再被他吐槽寫的爛,因?yàn)榇蠹叶级模绦騿T就怕別人說自己菜,后來時(shí)間長了發(fā)現(xiàn)寫完功能后review一遍代碼,然后修改一下會(huì)讓代碼規(guī)范整潔很多;其次有些功能會(huì)加深理解。后來我離職去了下一家公司也一直保留寫完代碼后再重新review一遍的習(xí)慣。review代碼幾點(diǎn)小的建議:做完一個(gè)小功能后或者發(fā)布一個(gè)版本后review一遍,這個(gè)時(shí)間點(diǎn)比較適合,新功能還在討論需求中,會(huì)有空余時(shí)間可以用來review。代碼review都看哪些東西,我其實(shí)一般主要就看三方面:代碼規(guī)范 命名、格式、易讀性等代碼涉及到的一些算法或者邏輯等代碼是否可整合,比如同一類的方法是否可以增加參數(shù)復(fù)用、自定義組件是否可以重新封裝增強(qiáng)擴(kuò)展性。當(dāng)然如果系統(tǒng)性的review代碼不僅僅這三點(diǎn),大家根據(jù)自己實(shí)際情況來做。四.多學(xué)習(xí)優(yōu)秀的源碼
如何讓自己的代碼寫的看起來很高大上、有水平、很規(guī)范。很多老菜鳥一般都會(huì)脫口而出:看源碼啊...這個(gè)看源碼沒毛病,看源碼肯定會(huì)有所收獲,源碼基本都是標(biāo)準(zhǔn)規(guī)范化的模板,但是說實(shí)話,我真的沒咋認(rèn)真讀過那些底層源碼,除了剛學(xué)習(xí)java那會(huì)老師說必須仔細(xì)看API,去源碼找方法,后來基本沒咋看過源碼,因?yàn)槲艺娴目床幌氯ァ?/p>我一般都喜歡帶著問題或者有一定目的去做事情,你就直接讓我看一堆源碼,我容易犯困。我個(gè)人習(xí)慣是看那些大廠的DEMO,比如我做云直播,我就看XX團(tuán)隊(duì)的DEMO的代碼是怎么寫的;我做推送我就看某推送團(tuán)隊(duì)的API文檔說明,學(xué)習(xí)文檔說明里面附帶的DEMO源碼是如何寫的。所以個(gè)人習(xí)慣看大廠發(fā)布的最新版本的DEMO源碼,因?yàn)槭紫任夷芸炊浯文苤苯訋臀医鉀Q問題。再后來我就看github上面主流的一些開源DEMO,都是star高的開源項(xiàng)目,這些項(xiàng)目都有一個(gè)共同點(diǎn),就是代碼都寫的很規(guī)范。學(xué)習(xí)代碼規(guī)范的同時(shí)還能順便了解項(xiàng)目中都依賴了哪些新的框架、采用了哪些新的技術(shù),總而言之就是找適合自己的優(yōu)秀的項(xiàng)目去學(xué)習(xí)。五.保持平和的心態(tài)
程序員這個(gè)職業(yè)其實(shí)對(duì)個(gè)人的心態(tài)要求很高,控制不好自己的心態(tài)真的不太適合做這行工作。因?yàn)槊刻於紩?huì)面對(duì)各種復(fù)雜的問題,做不完的功能,改不完的BUG...描述一個(gè)場景:你正在改一個(gè)特別難處理的bug,但是開發(fā)環(huán)境卻在這時(shí)候出問題了,配置了半天還是解決不了,開發(fā)環(huán)境還是一直有問題,恰好這時(shí)候產(chǎn)品經(jīng)理突然過來和你說之前另外一個(gè)功能模塊的需求設(shè)計(jì)需要推翻重新做并且需要盡快加班改完。產(chǎn)品經(jīng)理通知所有相關(guān)人員參加新需求討論交底會(huì)議,會(huì)上研發(fā)經(jīng)理要求大家晚上留下來加班討論改版后的系統(tǒng)架構(gòu)設(shè)計(jì)和數(shù)據(jù)庫相關(guān)改動(dòng)設(shè)計(jì),此時(shí)你的內(nèi)心想必是有很多神獸飄過...很多開發(fā)的小伙伴碰到這種情況,心態(tài)就發(fā)生變化了,bug也改不下去,功能也不想做,即便硬著頭皮去改去做也會(huì)有很多問題,因?yàn)樾膽B(tài)沒調(diào)整好,邏輯沒有梳理清晰,做出來的功能一定是問題一大堆。調(diào)整心態(tài)的方法:1.站起來活動(dòng)活動(dòng),讓自己冷靜冷靜。2.去各種摸魚群里面吹吹水、吐槽吐槽,都可以緩解我們緊張煩躁的情緒。3.去各種技術(shù)社區(qū)去瀏覽瀏覽文章或者寫寫文章。總之就是做一些事情,先轉(zhuǎn)移一下注意力,先把自己心態(tài)調(diào)整好,這樣才能高效的投入到工作中。總結(jié)
代碼是一環(huán)扣一環(huán)的,從邏輯、可讀、簡潔、效率、維護(hù),這些標(biāo)準(zhǔn)都決定了代碼的好壞。從看到學(xué)再到寫,在提升自己代碼能力的同時(shí),還要注意代碼的質(zhì)量優(yōu)化,一個(gè)好的程序,是由好的代碼模塊組合而成的,而在我們寫程序的時(shí)候就應(yīng)該多加考慮和設(shè)計(jì),這樣不僅是對(duì)代碼負(fù)責(zé)也是對(duì)自己負(fù)責(zé),寫好優(yōu)質(zhì)代碼是一個(gè)程序員應(yīng)盡的責(zé)任。本文分享自華為云社區(qū)《【云駐共創(chuàng)】為了寫好代碼,你堅(jiān)持了哪些好習(xí)慣?》,作者:再見孫悟空_。
大數(shù)據(jù)需要學(xué)編程嗎?
這是一個(gè)非常好的問題,也是很多大數(shù)據(jù)初學(xué)者比較關(guān)心的問題之一,作為一名大數(shù)據(jù)從業(yè)者,我來回答一下。
首先,當(dāng)前的大數(shù)據(jù)技術(shù)體系已經(jīng)非常龐大了,涉及到數(shù)據(jù)的采集、整理、傳輸、存儲(chǔ)、分析、呈現(xiàn)和應(yīng)用,對(duì)應(yīng)的崗位包括大數(shù)據(jù)運(yùn)維、大數(shù)據(jù)開發(fā)、大數(shù)據(jù)分析等,不同的崗位需要掌握不同的技術(shù),所以初學(xué)者在學(xué)習(xí)大數(shù)據(jù)的時(shí)候,應(yīng)該根據(jù)自身的知識(shí)結(jié)構(gòu)和能力特點(diǎn)來選擇一個(gè)學(xué)習(xí)方向。
從大數(shù)據(jù)領(lǐng)域涉及到的崗位來看,大數(shù)據(jù)開發(fā)對(duì)于編程能力的要求比較高,所以如果要從事大數(shù)據(jù)開發(fā)崗位,應(yīng)該重點(diǎn)掌握一下編程知識(shí)。目前大數(shù)據(jù)開發(fā)分為兩大類崗位方向,其一是大數(shù)據(jù)平臺(tái)開發(fā),其二是大數(shù)據(jù)應(yīng)用開發(fā),大數(shù)據(jù)平臺(tái)開發(fā)主要致力于大數(shù)據(jù)平臺(tái)的搭建,而大數(shù)據(jù)應(yīng)用開發(fā)則致力于大數(shù)據(jù)的行業(yè)應(yīng)用。
大數(shù)據(jù)平臺(tái)開發(fā)對(duì)于從業(yè)者的技術(shù)要求比較高,需要具備豐富的開發(fā)經(jīng)驗(yàn),同時(shí)也要有較強(qiáng)的研發(fā)能力,近兩年不少大數(shù)據(jù)方向的研究生比較愿意從事這一類崗位。大數(shù)據(jù)平臺(tái)開發(fā)崗位往往集中在大型科技(互聯(lián)網(wǎng))公司,在產(chǎn)業(yè)互聯(lián)網(wǎng)時(shí)代,大型科技公司會(huì)把大數(shù)據(jù)平臺(tái)、物聯(lián)網(wǎng)平臺(tái)和人工智能平臺(tái)等,作為重點(diǎn)的戰(zhàn)略布局,在人才需求量上也會(huì)比較大。
從崗位附加值上來看,大數(shù)據(jù)平臺(tái)開發(fā)崗位的附加值還是比較高的,不僅體現(xiàn)在較高的薪資待遇方面,同時(shí)也會(huì)有廣闊的發(fā)展空間。按照傳統(tǒng)的崗位級(jí)別來劃分,大數(shù)據(jù)平臺(tái)開發(fā)類崗位往往屬于研發(fā)級(jí)崗位,職業(yè)生命周期也會(huì)相對(duì)比較長。對(duì)于初學(xué)者來說,如果自身的知識(shí)結(jié)構(gòu)比較健全,數(shù)學(xué)基礎(chǔ)比較好,而且有一定的場景支撐(數(shù)據(jù)中心),那么完全可以走大數(shù)據(jù)平臺(tái)研發(fā)路線。對(duì)于沒有開發(fā)場景支撐的初級(jí)程序員來說,通過讀研來走向大數(shù)據(jù)平臺(tái)開發(fā)崗位,往往是比較現(xiàn)實(shí)的選擇。
相對(duì)于大數(shù)據(jù)平臺(tái)開發(fā)崗位來說,大數(shù)據(jù)應(yīng)用開發(fā)崗位的技術(shù)門檻要相對(duì)低一些,主要的開發(fā)任務(wù)是基于大數(shù)據(jù)平臺(tái)來展開。目前Java、Python、Scala、R等編程語言在大數(shù)據(jù)應(yīng)用開發(fā)領(lǐng)域有比較廣泛的應(yīng)用,相關(guān)的開發(fā)案例也越來越多,所以初學(xué)者會(huì)有一個(gè)比較好的學(xué)習(xí)體驗(yàn)。對(duì)于初學(xué)者來說,如果基礎(chǔ)比較薄弱,可以從Java開始學(xué)起,然后大數(shù)據(jù)平臺(tái)可以從Hadoop開始學(xué)起。
相對(duì)于大數(shù)據(jù)開發(fā)崗位來說,大數(shù)據(jù)分析崗位對(duì)于編程的要求要相對(duì)弱一些,但是也是需要具備一定編程能力的,尤其是采用機(jī)器學(xué)習(xí)的方式進(jìn)行數(shù)據(jù)分析。當(dāng)然,大數(shù)據(jù)分析崗位的重點(diǎn)在于算法的設(shè)計(jì),所以大數(shù)據(jù)分析崗位(算法崗)對(duì)于數(shù)學(xué)基礎(chǔ)的要求比較高。另外,大數(shù)據(jù)分析崗位對(duì)于行業(yè)知識(shí)的要求也相對(duì)比較高。
大數(shù)據(jù)運(yùn)維崗位涉及到的細(xì)分崗位比較多,這些崗位對(duì)于編程的要求會(huì)比較少,但是掌握編程也能夠在很大程度上提升工作效率。
總之,在大數(shù)據(jù)領(lǐng)域不論是從事何種崗位,掌握編程知識(shí)都具有一定的必要性。
我從事互聯(lián)網(wǎng)行業(yè)多年,目前也在帶計(jì)算機(jī)專業(yè)的研究生,主要的研究方向集中在大數(shù)據(jù)和人工智能領(lǐng)域,我會(huì)陸續(xù)寫一些關(guān)于互聯(lián)網(wǎng)技術(shù)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會(huì)有所收獲。
如果有互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等方面的問題,或者是考研方面的問題,都可以在評(píng)論區(qū)留言,或者私信我!
喜歡打游戲可以學(xué)游戲開發(fā)嗎?
首先我要回答你的問題,答案是沒那么簡單。玩游戲與游戲開發(fā)其實(shí)不是同一個(gè)概念,游戲開發(fā)是一個(gè)非常復(fù)雜的過程,并沒有想象的那么簡單,開發(fā)游戲需要很高的智商,需要足夠的想象力,最重要的是,需要足夠的學(xué)歷。
學(xué)識(shí)可以說是這個(gè)領(lǐng)域的敲門磚,如果你沒有足夠的學(xué)歷,游戲公司就不會(huì)聘用你。而不是僅僅喜歡玩游戲就足夠的,如果你喜歡玩游戲,你可以去當(dāng)一個(gè)游戲主播,如果你小有名氣,月入幾萬是沒有問題的。同時(shí)你也可以當(dāng)一個(gè)游戲視頻創(chuàng)作者,他們的薪水不低于游戲主播。
而開發(fā)游戲是需要你精通計(jì)算機(jī)領(lǐng)域、精通編程的。并不是你所想的精通游戲,開發(fā)游戲的人員可以游戲玩的不好,但是不能計(jì)算機(jī)不好。
如果你想要當(dāng)一個(gè)游戲開發(fā)者,你就應(yīng)當(dāng)認(rèn)真學(xué)習(xí)計(jì)算機(jī),從現(xiàn)在開始認(rèn)真學(xué)習(xí),上課認(rèn)真聽,下課認(rèn)真完成作業(yè),考上一個(gè)好大學(xué),這才是你開發(fā)游戲的條件。而且你如果想要賺錢你必須讓這個(gè)游戲火。
總得來說,開發(fā)游戲不是那么容易的。
以上就是關(guān)于怎樣編程生存游戲和編程對(duì)你來說有什么樂趣的相關(guān)問題解答,希望對(duì)你有所幫助。