Ⅰ 評「程序員怎麼樣才能保證自己的程序沒有BUG」
復核代碼的目的有:
* 檢查代碼是否規范,如命名規范,注釋
* 保證一段代碼至少有兩人共同熟悉,可以由任一人來更改。
* 審察未文檔化的細節設計,即由代碼直接表達的設計,由代碼人口述設計並對照代碼
我認為程序員永遠都不會有100%的自信。
即使程序已經發布,被用戶接受很長時間,只有好評沒有抱怨,依舊不能確認有沒有錯誤。
只能假定錯誤是永恆的,它們一直在那裡,只是不到條件爆發。
一個程序員能做的就是,排除所有膚淺的錯誤,加大隱藏錯誤出現的幾率並找到它們,
採用一些容錯性代碼減小可能的錯誤,減少程序發布後爆發的機率。
測試的目的是為了發現錯誤,
沒有100%覆蓋的測試。就是說,總是有一些狀態是測試不到的。
代碼人員認為不可避免地存在錯誤,需要測試,測試人員認為測試覆蓋度不可能100%,還是要代碼小心。
這是一個頭痛的問題,結果是沒有完美的程序。
單元測試是白箱測試,可以根據代碼實現將注意力放到最關鍵的部位。
但仍然不是100%覆蓋的。
單元測試一般針對的是邊界數據,不要求覆蓋度,而更要求有效性。
其目的更主要的是保證代碼更改不會破壞原有的正確性,是提供保障而不是查找故障。
保證沒有錯誤的唯一方法是不寫代碼,減少錯誤的最好方法是少寫代碼。
簡單的設計和實現是減少錯誤的最佳方法。簡單的代碼錯誤必定少。
畫蛇添足式的功能則是最大的錯誤發源地。
Ⅱ 程序員真的很難嗎
您好,非常榮幸能在此回答您的問題。以下是我對此問題的部分見解,若有錯誤,歡迎指出。展開全部
很多人問編程難不難?我想說那可不是鬧著玩的。不從事這一行的永遠不知道這行的艱辛,還咋巴著小眼睛問編程好不好學?
不知道諸位看沒看過聖鬥士星矢這部動漫,如果你想踏入編程殿堂,就要先想想那個被無數小孩子嘲笑的實力很菜只會死纏濫打經常被虐得體無完膚的主角星矢,首先你得問問自己,想學編程,你有沒有像星矢一樣持之以恆百折不撓一步一個腳印忍受常人無法想像的困難和痛苦的品質,沒有?你說我開玩笑逗你,那好,下面的不用看了,因為你確實不適合學。
如果你只想著掙大錢,勸你別碰這行,一句話,別來找虐。為什麼?你看到的手機APP,各種應用,要想開發出來,不知道需要多少種技術。拿最常見的網站開發,需要後台資料庫mysql,數據格式json,xml,各種網路協議,還有網站開發語言PHP,
JSP,ASP.NET,等等不下十幾種技術。而每一種技術都是一本厚厚的五六百頁的書,需要最少一年多時間掌握一門技術。最要命的,每種技術互不交叉還跨度很大,每種技術都有自己的設計理念和很多很多「天坑」在等著你攻克,你問問你自己,你有這個恆心和意志力天天捧著本大部頭的書天天看,天天上機操作學嗎?你說有,那好,你看電視上那些富二代天天瀟灑地到處遊玩泡妞基本於你無緣了,因為你根本就沒時間,談個戀愛都困難,還想打網遊玩王者?那算了,你還是別碰這行了,別耽誤你玩游戲享受生活了。
學習編程,你上來就會碰到第一關勸退BOSS,環境搭建。如果只會個C++,JAVA可以有VS,
Eclipse幫助你,但是你要學那種新興的語言工具,如cocos2dx, NodeJS, Android,各種伺服器語言,Linux,
那對不起,各種環境配置能練得你頭大,就算用上VS這種宇宙無敵IDE,
學編程還是會碰到無休無止的各種編譯錯誤,運行時錯誤,很多時候編譯器給出的出錯語句非常費解,全英文的哦,還是高濃縮科技英語,還經常真實出錯原因跟IDE的出錯提示差了十萬八千里,這個時候只能依賴您豐富的編程排錯經驗,不行只有網路,google,專業論壇海量搜索,碰運氣了,看是不是有高人也遇到同樣的問題,很多情況下你發的帖子石沉大海,沒人回答,這個時候是你最容易放棄被勸退的時候,少年們,覺悟吧。這個時候如果你沒有星矢那樣反抗命運不公,被打倒多少次都要站起來不服輸的勇氣,半途而廢是你註定的結局。
程序員加班很恐怖,工作制通常是996,即早9晚9周六還要上班,晚9下班還是早的,一般到晚上十點。你想那時夜深人靜了人家都休息抱著老婆睡覺了,你還在工作中,F9, F10, 不對,重來,這聽上去是不是很崩潰?
第2,程序員耗腦太嚴重。工作中需要十幾個小時大腦不停地運轉。需要設計演算法,不斷地把代碼改來改去來適應客戶一天幾變的需求。很多功能沒有現成的解決方案,還經常遇到一些天書一樣的疑難問題,bug,實際工作中突發狀況千奇百怪,你可能見都沒見過的bug,崩潰,需要一點一點查幾萬行的log日誌。而且也需要網路,google,英文論壇尋求幫助,理解錯誤信息是什麼意思。所以英文不好的沒耐心的還是算了吧,不適合這行。
第3.
程序開發首先是非常難學的,任何一門編程語言都有自己獨到的思想,概念設計,很多情況下一門語言與另一門語言沒有多大關系,知識經驗無法串用。而且工作中你還不得不用到這些技術你不得不去學。而且程序技術日新月異,新類庫新SDK每天都會推出,你需要日復一日不斷地學習新技術。如最新視頻解碼技術,游戲引擎等等,而這些新技術可是國內沒有書和任何資料的,需要你到英文官方網站去找實例看文檔去學,更要命的,新的技術和老的還沒太大關聯,你得重頭去學。而且老闆急趕項目不會給你什麼時間,一般三天就是極限了,你需要這么短的時間快速掌握一項新技術...
綜上,你明白程序員為什麼總要加班了吧,也知道這行不是人乾的吧。為什麼說程序員干到三十干不動。很簡單,以這種消磨人生所有時間狀態,你生命中只有加班加班工作工作學習學習,你將不能顧家不能跟朋友聚會不能再有自己一點點休閑時間,更別說談女朋友戀愛了,以這種狀態你能堅持到三十歲?我想那簡直是個奇跡了非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!
Ⅲ 程序員怎麼樣保證自己的程序沒有BUG!
但大部分程序員都有一個問題就是不太願意測試自己的代碼。他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。 1. 影響了程序員自己的聲譽 2. 影響了產品的質量 3. 影響了客戶的信任度 4. 這個時候再 DEBUG 難度增大了許多。 大的不說,就說多自己聲譽的影響吧。如果你的程序總會有這樣那樣的 BUG ,你得到收益會減少,即使你寫了很多代碼。 程序員必須克服一些自身的致命缺點才能夠從根本上解決這個問題。那麼這個問題是什麼?前面我們已經提到,程序員對自己的代碼都非常寬容,認為那是正確的沒有問題。實際上這種想法比較正常,程序是通過程序員思考和設計之後才寫出來,程序員不會將自己認為不正確的東西寫到代碼里,而到這個時候都一直假設程序是正確的;但人非聖賢,怎麼可能不犯錯誤來。實際上程序員在對待其他程序員時候的態度就很好,帶著一種挑剔和學習的態度;但一旦對待自己的代碼就很難這么做;這就是最致命的。程序員也必須對自己的代碼帶著挑剔和學習的態度;這個基礎是假設自己的代碼是錯誤的,然後需要做的是怎麼樣證明自己的代碼是正確的。程序員自身可以在程序生成的每個階段做這些工作:仔細的設計(這個時候畫點時間是值得的,必須保證我們對自己的程序有清晰的輪廓後才能開始動手寫)、編寫代碼時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。 仔細的設計:這個的仔細是說在程序員編寫代碼之前,其必須對代碼的整個結構以及邏輯結構有明確的清晰的了解,只有這個時候才可以去寫代碼。這里沒有談到文檔,但我說到了一定要清晰的思路,但清晰的思路不是每個人都可以在腦袋中直接形成的,很多人都是普通人,沒有辦法在腦袋瓜中把所有問題都想清楚,那麼就記下來,特別對於復雜的邏輯。 編寫代碼:對於沒有把握的代碼,例如:新設計的演算法,最好保證其正確性。可以單獨將這部分測試,這可以讓代碼模塊化的同時又保證了代碼的正確性。一句話:少量的代碼保證質量還是比較簡單的。 單元測試:單元測試的重要性不在贅敘了,現在也有許多工具可以幫助程序員並減少工作量。 功能測試:程序員保證自己代碼質量的最後一關;為了做這樣的工作我們可能必須寫一些代碼來測試,甚至是測試工作。使用大量的 CASE 來測試,以及錯誤的 CASE 。這里和測試人員的測試不同之處在於:仍然讓程序員的注意力放在其自己的代碼范圍內,減小了排錯的難度。 如果你通過了以上的步驟都找不出你程序中有任何問題的話,那麼我想你的程序應該足夠健壯了。其實還有一點必須說明的就是:代碼 REVIEW 。 前面說道了程序員對待別人代碼的態度是挑剔和學習的態度,所以讓其他程序員來 REVIEW 你的代碼也是檢查程序有沒有邏輯錯誤的很好的辦法。團隊中應該交叉 REVIEW 代碼,這是實踐的經驗。 作為一個好的程序員必須有以上的習慣,以及對待自己代碼象孩子一樣,我們要愛惜我們的代碼,同時也要讓代碼走正確的路。
Ⅳ 資深程序員可以避免敲代碼時出現bug嗎
程序員遇到bug是在正常不過的事情了,就算非常資深的程序員也無可避免bug的存在,一般來說,除非你寫一輩子 Hello World。
不過世界上的確存在一些鳳毛麟角天才的程序員,他們差不多能做到這一點。接到任務之後,思考,冥想,在筆記本上畫出數據結構或某個演算法片段,腹稿打的差不多了就開 始編程,用 Vim、Emacs 或 IDE 工具,大部分時候能夠一氣呵成,然後構建代碼,構造測試數據,運行程序,在反復調試中修復幾個編程過程中沒有考慮到的問題,就可以提交到代碼庫了。
他們的 代碼交給測試和其他開發者,少有人能挑出 bug,因為他們對代碼有敏銳的感覺,能夠在別人忽略的地方發現代碼的壞味道,並給出巧妙而優雅的解決方案。
他們是天生的代碼創造者,這樣的人往往效率高 而且少有錯誤,以至於會被一些平庸的團隊忽略,因為技術領導總是會下意識的去關注那些最容易出事的環節,但這些人才是團隊真正的脊樑,不是那些四處救火者。
Ⅳ 程序員也難逃的二八定律,成為頂級程序員真的有那麼難嗎
程序員也是分為等級的,因為每個人的實力水平不同,成為頂級的程序員肯定是要付出很多努力的,有時候寫程序就可以看得出來,有的程序員寫出來的程序經常會有漏洞,導致系統運行不穩定,但是有的程序員人家寫的程序不但佔用的內存少,沒有漏洞,而且也運行流暢,這就是頂級程序員的最基本工作,因為大部分的程序員根本就沒有自己寫的程序,都是復制粘貼別人的,所以說現在的程序員就是搬運工而已。
生活中的程序員看著很辛苦,實際那是他們把他當作掙錢的工具,當你的內心太急功近利的時候就會感到疲憊,也做不出太大成果的事情,因為你的心思沒有在開發程序上下功夫,總是漂浮不定的,所以說二八定律永遠的存在。
Ⅵ 編寫程序很難嗎
很難,尤其是對中國人
精通一門編程語言需要10-20年,而很多的編程語言本身設計的局限性比較大,或者過於復雜,導致學編程的人根本沒法完全的掌握。
編程的難點,
1 英文字母,這個很致命,因為我們看中文是從小看,可以做到一目十行,但是看英文,我們的閱讀水平明顯下降。這樣很影響我們對於代碼的理解和編程速度。
2 標點符號的過分使用,英語對於標點的熱愛遠超中文,導致我們在編程中不得不頻繁的切換。
3 思維邏輯的西方化,編程語言都是西方人設計的,所以思維邏輯上符合西方人的理解方式
中國人的思維邏輯和他們完全不同
4 編程語言普遍太老,目前的最流行的幾十種編程語言的出生時間,最年輕的GO(谷歌的)也有10年了,設計思想,語言習慣等等,都有明顯的時代特徵,很多的設計理念,思想,語法結構都顯得多餘。
綜上,編程語言本身的問題太多,導致了中國人學習起來困難。
Ⅶ 程序員難嗎
程序員 好嗎?全面的?
程序員很累的,當然不要以為他們很牛,其實大部分將近90%的人水平一般,大家通常晚上加班搞到凌晨一兩點,因此很多人不到30歲開始轉行了,在中國這個大環境下,很多人基本上在35歲左右基本不做程序了。
程序員基本比正常人壽命少10歲
大家好,程序員好做嗎?
記得,胖梗不是一口吃出來的,還有一點,要提醒你,我也學編程的,上學的時候老師說,程序員和小姐都一樣,都是吃青春飯的,當時不理解,畢業工作以後才明白,下了班站著都能睡著。而且程序員老了以後會有不同程度的腦萎縮,這個我沒法證實,聽說而已。還有,學程序最重要就是基礎,然後看一些簡單的小程序開拓思維,鍛煉邏輯思維能力,再做幾個案例,就可以試著找找工作了。
程序員難學嗎
比較難,因為這需要一定的羅冊氏碼輯思維能力。
如果中學的數理化學得不好,編程也通常學不好,倒不是說編程的時候需要用到多少數理化的知識,但體現了邏輯思維能力。
做個程序員到底好不好
做程序員其實還是非常不錯的,至少就就業薪資待遇來說,是其他行業無法超越的。其他行業想要薪資過萬的話,可能要奮斗好多年,各種評職稱,各種考證,但是在程序開發行業,只要你不斷提升自己的技能,薪資過兩萬都是非常容易的。
轉行做程序員到底好不好
整個IT行業的核心就是軟體,網路和通訊只是IT行業的信息載體。
因此IT行業收入高,利潤大的企業就是軟體企業,軟體企業里相對「高,精,尖」的是項目分析師,州哪需求分析師,及應用人員,程序設計師,他們所佔總人數不過10%,其餘80%都是程序員,高精尖人員也是逐步從程序員基礎做起,經過一段時間積累,可以成長成為軟體工程師,項目分析師直至項目經理。從未來的職業發展道理來看,學軟體的技術能力發展空間更大。未來職業提升空間,相對工資和收入提升空間都要更大。
所以做程序員的發展空間和前景都是不錯的.
新手程序員找工作就那麼難么
你好。現在年底了,不過最重要的是要對自己有信心。相信自己能行的!加油,一定會找到好的工作的。
程序員很苦嗎?編程難嗎?
其實看個人心理的 我也學編程的 ,學一個星期了 感覺基本不難的。
做軟體測試比程序員工作更難嗎?
軟體測試員必須有卡法經驗的,不然還真做不了,軟體測試員對程序理解能力要很強...
為什麼都說程序員不好
其實我覺得程序員也沒有不好吧,工作壓力比較大而且經常加班到半夜吧,但是收入相對高啊。現在這個時代程序員很吃香的。
有沒有做程序員的,程序好核凳做么?
我原來就是學習計算機軟體專業的。我的經驗就是:如果只是一個簡單的程序員,那麼可能還稍微容易一些,有的只要求高中畢業學歷就可以;但是如果是要求你自己學會設計演算法和數據結構(這在學習計算機軟體專業中是必修課),並且能夠用程序實現你的演算法,那麼就比程序員要難一些了,這個學歷至少得本科學歷。
Ⅷ 程序員如何做到『編程速度又快,Bug 數量又少』
編寫明確表達行為的代碼。選擇有意義、准確、無歧義的符號名字。嚴格執行命名方案,不要用不同的單詞描述同一個事物。
如果有,採用最簡單的解決方案。不罩廳要為速度優化,而是為可讀性和透明度優化。
如果你在最初編寫代碼時沒有注意可重用性,不要欺騙自己斗枯相信代碼可以很神奇地被重用。相反,應該從一種情形著手,保持代碼的具體性。如果值得修改代碼讓它一般化,那麼應該做好徹底重寫的准備。
希望可物銷隱以幫到您,謝謝!
Ⅸ 編程究竟難在哪
1. 難在思路的構建
你學了很多語法,很多 API,但是當給你一個實際問題,讓你通過編程實現,不是簡單地羅列 API 即可完成,而是需要你對問題進行分析,理清解決問題的邏輯,然後再通過各種演算法、數據結構和 API 等進行編程實現。
2. 做出來容易,做好難
當你解決了思路構建的難點,解決了一個問題,但是你是否使用的最好的方法,這就是所謂的做出來容易,做好難。
寫的程序能夠解決問題且沒有 bug 是基本要求。這里的做好不是指功能正確,而是寫的程序容易理解,能夠很容易讓其他接手的程序員(水平不差)看懂為什麼這么寫。
正確是現在怎麼寫不會挖坑害將來的人,現在怎麼寫能讓別人1年後看你代碼時候不可能理解錯你現在的意圖,現在怎麼寫能在別人將來犯錯的時候提示他你錯了。
編程是給未來的未知人講故事,你無法知道將來這個人是誰,他都懂什麼,他經歷過什麼,這個系統將來已經是什麼樣子了。我們需要在這種無知,缺乏信息的情況下做決定,從千萬種把這件事做出來的方法里,選出你覺得最能把這個故事給講好的那種方式,把故事寫下來。
編程是一種溝通,用程序跨越時空之溝通則是一門屬於程序員的特有的藝術 —— 阿萊克西斯
3. 規范性好,有良好的可擴展性
並且程序的可擴展性,規范性高,後期維護難度小。整體功能實現的過程中,各種情況考慮規范。其實學習編程和學習其他內容一樣,沒有什麼太大差別。心態放好,用對方法,你就能夠學好。重要的是學知識的人是什麼樣子,而不是學的是什麼。
在這給你一些學習編程的建議,希望對你有用。
1. 讓編程成為一個習慣
想要培養一項技能的最好的辦法,就是將他融入到我們的生活並成為我們的愛好。其實說白了,就是讓這個愛好成為一個習慣,一天不去做這件事情,都會覺得少了什麼。在不知不覺中,這個習慣會像滾雪球一樣積累起來。
對我來說,養成這種習慣首先就是要對「拖延症」說不。比如,你想鍛煉下自己的寫作能力時,但是沒有好看的本子,沒有好的靈感,沒有安靜的環境....總之就是找各種理由一拖再拖,最後就不了了之了。
為自己設定一下,每周拿出幾天,每天拿出幾個小時,編程學習就這樣慢慢步入正軌。
2. 將每天的學習過程拆分成小塊
對待編程學習,我們沒必要像健身狂人那樣一口氣做到筋疲力盡。與其直接編程2小時,我們完全可以先做40分鍾、然後休息5分鍾,整個過程重復4次。很明顯。