首頁>Club>
8
回覆列表
  • 1 # 使用者289913434813374

    放置位置在我的文件/My Games/Fallout4/Saves

    建議使用存檔管理器等簡便使用的軟體來進行捏臉資料的匯入

    否則會出現各種奇怪的事情

  • 2 # 數通暢聯

    程式碼出現BUG很正常,我們可以最大程度的避免BUG的出現,就像偏差一定存在、可以無限逼近正確,但是錯誤卻是可以透過好的工作方法、編碼規範、工作習慣來避免、杜絕。程式設計師開始編碼工作,不管整個專案開發還是部分程式碼擴充套件,都一定是源於實際需求:

    第一步明確需求的來龍去脈、然後確認清楚理解需求,確認是否理解需求的最佳實踐就是寫好需求說明、概要設計,然後跟干係人/負責人確認,而不是口頭上說理解了,甚至都不復述確認。

    第二步對概要設計中技術點進行驗證、細化設計,在細化設計過程中對工程名、類名、程式碼呼叫框架、方法名、成員變數和關鍵變數名進行設計,再跟干係人、負責人進行確認。

    第三步,良好的編碼習慣、編碼規範是非常重要的,也是直接體現程式設計師的基本素養,清晰的思路、良好的程式設計習慣是程式碼高質量的重要保障。

    最後一步是程式碼測試,程式設計師交付的程式碼一定要自己保障單元測試是能夠閉環透過,然後開發人員交叉測試。接著交付給QA測試部門進行測試,因為“燈下黑”有些問題程式設計師自己很難發現;對於較大幅度程式碼調整,還要進行迴歸測試、對所有功能、在各種環境下進行測試,迴歸測試工作量通常較大。

    好的軟體產品是設計出來的、開發出來的、更是專案實戰中用出來的,是不斷完善、測試、交付使用迭代出來的,不可能一蹴而就。工作方法、程式碼規範、編碼習慣、測試把關保障程式碼質量至關重要的,寫需求、設計、測試文件不是教條主義、更不是浪費時間,跟聰明愚鈍智商都沒有什麼關係,但是很多的程式設計師不夠重視、內心到行動都在抵制、抗拒,然後讓現實一次又一次的打臉,慢慢成長開始重視起來,深刻理解“只做一次、一次做對”是最省時間的,然後再苦口婆心或者雷厲風行用自己的血淚史或者規章制度來教導、約束新進的程式設計師。

  • 3 # 非著名程式設計師

    我記得這個問題,我寫過。而且我還專門寫了一篇文章來回答這個問題。

    看看我當時是有多無聊!哈哈……今天再來回答一遍這個問題。

    這個問題一看就知道不是程式設計師提問的,程式設計師都知道是怎麼回事。一定是一個外行人的提問。

    所以,對外行解釋程式中 Bug ,不能說的太專業,我講兩個故事,外行人看了就明白了。

    第一個故事:為啥你家裝修完了,你總是不滿意呢?

    很多裝修過房子的人都知道,裝修房子的過程有多辛苦,多操勞,裝修完了總是還有很多不滿意和缺憾。

    從交房的那一刻起,你就開始尋找設計師(跟設計軟體的設計師異曲同工),開始根據你家房子的尺寸和構造,朝向和你平時的生活習慣,儲藏東西的多少,進行房主的需求挖掘,這裡相當於軟體的產品經理。設計師根據你的需求設計工程圖紙和設計效果圖(這裡相當於軟體設計完了)。你感覺設計的不錯,好開工,水電工,瓦工,木工,油漆工,開始進場,根據效果圖施工(這裡的各種工互相配合,互相銜接,相當於軟體中的前端和後臺等工程師敲程式碼配合開發)。

    施工完了,得有工程監理和業主驗收,相當於開發中的測試。

    到這裡看起來很正常,但是,可能水電改的有點瑕疵,少了一個插座,你不滿意了,可能油漆有的地方塗抹不均勻,你也不滿意了,可能木工打的櫃體,磕碰了一點,你也不滿意了。這就是程式中的 bug 。

    你怎麼不說,裝修不能給我一次性裝修好呢?看看有多少工程銜接,各種工種配合,你能保證一點問題沒有麼?生活中處處都有不完美的地方,幹什麼活有十全十美的東西呢?

    你這只是驗收(相當於開發中的測試)的時候發現的問題,等你真正入住的時候,真正生活的時候,可能還會發現各種當初對設計不滿意的地方,很多東西等真正用的時候,才發現當初應該這麼設計(這也算 bug)。

    第二個故事:不按常理出牌

    你在使用一個產品的時候,人家明明有說明書,有使用步驟,你作為使用者,就是反著操作,比如:使用高壓鍋的時候,明明得先放氣,才能掀開鍋蓋,你非先掀開鍋蓋。意外發生了,嗖一下炸了!這就是程式中的崩潰,屬於大 bug 。

    人家設計程式的時候是有一套邏輯和操作步驟的,但是呢,使用者不清楚,就知道瞎按,瞎操作,眾口難調,使用者幾十萬的產品,每個使用者操作流程都不給你按照設計的來操作,就容易導致程式出 bug ,甚至崩潰!你說程式設計師能把所有的情況想到麼?

    還不是儘量想,想不到的等出了問題才能知道,才能修改!

    最後,程式設計哪有想象的那麼容易啊!作為程式設計師,自程式設計伊始,Bug 就會如影隨形,因為它就是你的影子。Bug 就是軟體的影子,和軟體就是與生俱來的,是不可逃脫的好 CP,有著難捨難分的好感情。Bug 無處不在,對於程式設計師的酷愛,超越程式猿的老婆,它對於軟體的痴迷,比程式猿還要厲害,即使再牛逼的程式猿也逃脫不了 Bug 的魔掌。

  • 4 # 師傅有妖怪

    網上有一個流傳的傳說:

    別人編譯執行程式碼是為了檢查有沒有bug,Jeff Dean(谷歌AI部門的負責人)是為了檢查編譯器有沒有bug。

    當然這只是傳說,沒有驗證。

    程式設計師為什麼要一直改bug?

    bug為什麼叫bug?

    其實第一次記載的bug還真的不是程式設計師寫出來的。

    那是一次在程式設計師在為計算機做測試的時候,突然發現計算機停止工作,檢查後發現原來是因為一隻蟲子(英文是bug)爬進了計算機,導致計算機繼電器出錯進而讓計算機停止了工作,因此計算機錯誤從此被稱為bug。

    不只是程式設計師要改bug

    會犯錯是人類的天性,因為人類不是完全精密的儀器,記憶會錯亂,身體控制達不到100%,認識也無法做到全知,所以程式設計師會寫出bug,播音員會念錯字,作家會寫錯字,我們會記錯人名。

    而且bug也不一定全是壞事,這一點在科學界尤其如此,因為科學本身就是一個不斷試錯的過程。比如拯救了無數生命的青黴素的誕生,也是在研究過程中失誤才發現的。

    也有故意製造bug的。比如我有一次使用一個第三方庫連線伺服器,但是後面發現這個庫在連線因為某些問題中斷後重新連線卻連線不上,這時候要換庫會很麻煩,所以我寫了一個bug,在連線中斷的時候崩潰整個服務然後重啟,這樣就可以連上了。

    bug都有哪些種類

    我來列舉一些bug的種類:

    邏輯性bug:這種bug通常是程式設計師思考的不夠縝密和全面導致的。程式碼相容性bug:通常一個程式不是由一個程式設計師完成的,多個程式設計師寫的程式碼之間可能會因為某些意識和理解不同導致bug發生。效能導致的bug:程式寫出來後可能會在不同的裝置上執行,在某些效能差的裝置上可能因為效能不夠導致程式出現bug。環境性bug:不同的環境也會導致bug的產生,比如早期衛星上的程式很多出現bug的原因是因為太空輻射不一樣,使得硬體受到影響,進而導致程式執行得到的結果和預期不同而出現bug。

    所以說,程式設計師很難一次性寫出沒有bug的程式。

    但是我們程式設計師也不因此就對bug包容了,雖然不能保證沒有bug,但是我們應該對自己有要求,對bug零容忍~

  • 5 # 急速馬力快de原始碼控

    不能。不能一次寫出沒有bug的程式碼,也不能一次修復完全,這和一口吃不成胖子是一個道理。

    程式中的bug有不同的種類,原因也各不相同,三六九等。可以說是“不同水平”的bug,一定程度上反映了軟體工程師的水平。

    1,程式碼級別的bug

    比如變數錯誤、計算公式錯誤,還有常見的頁面顯示、文案資訊等錯誤。

    這類問題容易修復,並且能夠透過程式碼檢查、功能測試等方式減少甚至避免。

    2,邏輯錯誤

    程式碼實現和業務需求不一致,比如計算每月的最後一天,因為每月天數不固定,可以使用下個月的1日減去一天,得到本月最後一天。

    這類bug經常由於測試覆蓋不到而較難發現,往往需要編寫單元測試。

    3,呼叫模組錯誤

    隨著應用系統功能越來越複雜,開發時會根據系統功能進行模組劃分,然後透過介面呼叫協作。

    不同模組的介面、資料、還有版本不一致時,會產生一些“複雜”的bug,不僅難於發現,也較難修復,常常需要配合單元測試、自動化測試,並在修復後進行迴歸驗證。

    4,系統整合bug

    拿近期發生的中行原油寶穿透事件舉例,中行原油寶在提交價格時,驗證負數價格無效,所以也就禁止了進一步提交操作。從單個系統看,這樣做是沒問題的。

    但是還有交易所繫統,它是允許負數價格的,這就悲劇了。

    多個系統間的bug需要透過完整的用例設計來避免,比如中行原油寶,測試要覆蓋到交易所繫統的完整用例。

  • 6 # 路飛寫程式碼

    在細緻的程式設計師在需求面前一切成空

    可以說筆者這十幾年做的專案來看,很少有將需求捋的特別細緻的,也就是說總是開發中擴充需求,需求中夾著著開發這樣一步一步往前推進的。

    這就會導致什麼情況呢?需求不確定,也就是說每一個需求其實在真實的場景之下或許並非我們所想的那樣,或許我們想到了第一個層面,其實還有第二個層面,也就是需求不全面。

    那麼我們在程式設計的時候就會只想到了一個方面,而並沒有覆蓋所有的方面,也就是程式存在了Bug,那麼在進行窮盡測試的時候,此時Bug就會顯現出來,這是其一。

    並非程式設計師要一直改Bug,只是為了完善程式

    甚至有一些Bug其實在程式設計師看來是非常不必要的,就比如使用者沒有按照操作手冊來進行相應的步驟,導致出現了錯誤,那麼其實在普通人看來就認為這是一個Bug。

    那麼其實這根本不是一個Bug,而是易用性的問題,那麼既然使用者提出了這樣的要求,那麼程式設計師也就必須去更改操作,或者增加限制,讓程式的執行路徑有且僅有一條,這是其二。

    在資深的程式設計師也無法一次性寫出沒有任何Bug的程式

    無論你多麼資深,你也無法寫出一個沒有任何Bug的程式,當然了筆者這兒指的是稍微複雜點的程式,肯定不包括我只寫一句列印的語句。

    因為其實程式設計做久了,幾乎所有的語言都大同小異,而不變的其實程式設計的思維,很多程式語言其實都是相互借鑑參考。所以並非不是程式設計師不想一次性寫出不再改變的程式碼,只是因為方方面面,比如需求,比如易用性,比如使用者的奇怪詭異的要求,這些讓程式設計師的Bug永遠在進行當中。

  • 7 # 嵌入式筆記v

    程式就跟人一樣,不斷的成長,不斷的變化,就會產生新的需求,與其說一直在改bug,不如說是一直在完善需求。 隨著市場不再提需求了,那麼程式離終結版也就不遠了。

  • 8 # 胡矣

    首先說結論,不能。為什麼呢?

    1、bug簡單理解就是程式的錯誤。

    2、任何一個已經在執行的程式都存在bug,只不過是出現的機率大小問題。出現機率大的bug在程式設計師自測和測試的過程中都已修復了。

    3、開發人員的能力不同影響著bug的數量。經驗豐富、思維嚴謹的開發工程師的bug相對少些。

    4、測試工程師的能力不同影響著線上bug的數量。思維清晰、邏輯嚴謹的測試工程師能在上線前發現更多的bug。

    5、生產環境和開發環境的不同也可能引起意想不到的bug。

    6、有些隱藏極深的bug,產生bug的條件極其苛刻,此類bug通常只有在發生之後透過檢視log來分析並修復。

    7、程式設計師拜雍正就專治八阿哥(BUG)。

  • 9 # 程式碼接盤俠

    程式設計師一直改bug,這段程式可能存在一些問題,可能是前期的需求調研有問題,需求不明確,程式設計有疏漏有問題。可能是程式本身的邏輯有問題,不嚴謹等等。總之,要分析問題本質,找到問題點,總結分析,避免後期的出現,不能補西牆漏東牆。

    出現漏洞或Bug怎麼做,有些場景需要Bug重現,分析出原由,這次改好了,會不會出現其他的問題?對其他的功能是不是有影響?這次出現的原因是什麼?只有對問題的深入剖析,後期大量的測試,才能減少bug出現的機率。

    有些問題是頻繁的修改需求,程式碼變得複雜,難維護,出現錯誤率高。這時可以分析是不是程式碼設計有問題,是否需要重新設計,如果時間條件不允許,可以設計幾個暫時彌補的方案。後期在重新設計程式碼的構建。健壯的程式碼,才可以適應時常變化的需求。

  • 10 # 宜生活收納分享

    先來看程式是怎麼來的,用蓋房子來說明程式的各個階段。

    需求分析:蓋房子之前,需要確定蓋在哪裡(程式執行環境),蓋成什麼樣(程式的具體功能)。設計:房屋的設計是按需求分析得到,根據需求一般會有多種方案,經過探討,最終定出最終方案。對於程式而言,設計一般由專案經理出。實現:房屋設計出來之後,安排一些人來蓋房子(對比於程式,就是指程式設計師)。房子越大,需要的人越多(程式也一樣,複雜的程式需要多人完成)。在這個階段,面臨著設計人員與實施人員對設計的交流,實施人員對設計的理解,各類實施人員之間的交流,在這些銜接環境,會由於理解的偏差,導致蓋出來的房子與設計有一定的不符(bug)。需求修改或者新增:儘管修正了房子與設計的不符(做不到把所有的不符都修正),但是把房子移交給客戶後,客戶極大可能會提出修改點或者新的需求。比如後續想修改廁所或者想搭個平臺(程式新增功能),這些都有可能。由於需求的修改與不斷增加,有可能影響到原來的實現,相互作用下,會引入問題(bug)。

    從上面的例子可以看出,程式的特點

    複雜性主觀性不確定性程式與世界萬物一樣,都不能做到完美,只有在不斷修正bug的過程中去趨向完美。

  • 11 # 雨滴測試

    能做到沒有Bug的程式幾乎是不可能的,原因是即便一個簡單的功能,你都要考慮很多種情況,再結合系統業務的複雜性,能考慮到所有的情況幾乎是天方夜譚。更何況一個系統的實現是由團隊來完成的,那程式設計師間的配合和溝通也會影響到程式的bug的出現 。所以說我們只能儘量做到能減少,但是杜絕是不可能的 。

    既然提到了Bug,這裡我們就來了解下bug的定義 ?

    1.bug的定義

    bug:軟體中存在的瑕疵,可能會導致軟體失效。簡單的說就是軟體系統中存在的可能導致系統出錯、失效、宕機等問題的錯誤或缺陷

    一般情況下,我們會給bug按照嚴重程度劃分等級,等級越嚴重的,造成的後果就越大,對使用者或公司的損失越多,反之就越小。對於輕微的bug,即使已經發現了也不一定去修復 。所以,程式設計師要修改的bug往往都是被認為有影響的bug 。

    2.什麼樣的問題才算是bug?

    很多人對bug的理解往往比較片面,以為只是功能,效能等一些常見型別的bug。其實不然,根據ISO 9126軟體質量模型定義,軟體質量共分為6個大特性,27個子特性,也就是說,每一個特性出現的問題都算做是bug。

    ISO 9126軟體質量模型是評價軟體質量的國際標準,這個模型是軟體質量標準的核心,對於大部分的軟體,都可以考慮從這這6個特性和27個子特性去測試、評價一個軟體。

    3.軟體複雜度的提升

    以上還是說明的是單一功能不同質量屬性的情況,那麼在一個系統中,往往會有很多的功能,功能間的組合使用,相關關聯及影響都會使軟體的變得更加複雜。若你正好使用的是一款有著上億使用者量的產品,那麼它的複雜度更是以指數級增長。那麼對於這樣一個複雜的系統,再結合質量屬性去考慮,要考慮的情況基本就是個天文數字。

    就連Windows這麼強大成熟的系統,使用過程中經常也會遇到的問題,比如像下面的這個問題就是個人電腦上最近發現的。

    同樣在網路上報的比較嚴重的bug,如最近幾年CSDN的賬號被盜事件,12306網站崩潰等情況屢見不鮮。

    4.什麼樣的程式,才算是一個好的程式呢?

    在上面提到,要想設計出一個無bug的程式幾乎不可能,但並非沒有好的程式,個人認為,一個優秀的系統至少在以下方面表現的很優秀。

    向這樣優秀產品其背後一定有一支優秀的程式設計師團隊,即便這樣,這幫程式設計師多數時間還在都改bug,只是他們要解決的bug難度更大。

    總結

    總體來說,程式設計師不可能做到程式無bug,別說是一次做好,就是十次,甚至更多次也不能徹底消除bug。只是可以做到最大程度的減少嚴重bug,至少發現的要及時解決,然後可以使程式上線面向使用者,若使用者在使用過程中發現了Bug,若比較嚴重及時響應並解決,若並不是很嚴重,也可以跟下一個版本迭代中解決 。靠著這樣的解決思路來使產品不斷的穩定和成熟。

  • 12 # IT人故事會

    兄弟,樓一次蓋好了就行了,為什麼過幾年就有下水堵塞的情況啊,直接給下水管道設計的足夠粗不堵不就行了。其實如果什麼事都這麼簡單就好了,街上的路一次性修好就行了,為什麼過幾年就要重新鋪下路面,衣服買一件就好了一輩子不換就可以了,為什麼每年都要買,這個道理也是一樣的。誰不想做一個完美的設計,可以一勞永逸,人的需求是一直變的,有需求提出的新bug,還有遺漏的問題後來暴露出來的,新的需求例如:原來屋子裡住10人,後來進了個傳銷組織,直接讓屋子裡住了20個人,下水道管子比較細就堵了,這就是原來的需求滿足不了了。因為一個開關一直不用,當時可以,後來因為不按照正常的操作私拉了一個,導致一個開關不能用了,這就可能是遺漏的bug。反正人的慾望是一直在變的,每個人的習慣也不一樣,完全按照操作手冊可能沒問題,大概一創新可能系統就掛了,就產生了所謂的【bug】。

  • 13 # 小馬過河Vizit

    bug是計算機程式的瑕疵。世界上有什麼東西是完美無暇的呢?

    程式中的瑕疵是怎麼產生的呢?

    需求的瑕疵

    程式設計是為了滿足需求的,需求的設計和定義是一個很複雜的過程。人們在解決複雜的問題的時候,是會考慮不周的,那麼就會產生瑕疵。有時候甚至會產生不同需求的前後矛盾。

    為了把複雜的問題透過分而治之的方式簡化處理,人們發明了敏捷開發。邊實現,邊應用,邊改進,邊完善。從而減少需求的瑕疵。

    設計的瑕疵

    有了需求然後就會設計解決方案,包括架構設計和介面設計。設計中也會產生瑕疵。有些是因為對需求理解的偏差,有些是因為考慮不周。有些問題甚至明知道存在不足,也沒有更好的辦法。或者完美的方案需要大量的資源和時間,然而因為不經常發生,所以投入產出的回報不高。

    完美的設計方案也是一步一步改出來的。

    程式設計實現的瑕疵

    程式設計師在理解了需求和設計以後開始編碼實現。這個時候也會因為理解的不足產生錯誤。程式裡面包含大量的邏輯實現,充滿了判斷和選擇,就算沒有理解的偏差,也會出現漏洞。透過充分的單元測試可以發現大部分的漏洞,但是不可能發現全部的漏洞。尤其是在專案很緊的時候,程式設計師加班加點趕工實現,有時候,沒有時間寫充分的測試,只能測試最常見的情況之後就得匆匆上線。

    優秀的程式設計師,有著清晰的邏輯思維,良好的程式設計習慣,深厚的技術功底,認真負責的工作態度,寫出的程式bug比較少,但也是不能做的完全沒有。

  • 14 # 科技碰碰樂

    這個問題要首先分析下所寫程式的工程量

    工程量小的程式

    很簡單,這個程式不復雜,邏輯性不高,這樣的程式,只要程式設計師注意點,bug是能完全避免的。比如我這個程式就是簡單的輸入,再屏顯輸出,也就幾行程式碼,是不會有bug的。

    工程量大的程式

    因為工程量大,複雜性高,邏輯性也很強,所用的模組也多,在設計的時候也難免百密一漏,比如漏掉異常處理,模組校驗,資料同步遷移,執行緒關閉等等,沒有考慮充分,而程式設計時也沒有注意到,在測試時也不一定會測到,甚至是實際運行了一段時間也不會碰到,所以可想而知,這個bug是多麼的難以測出。有時候,只有在我們意外進行到一個部分時,這個程式bug才偶爾出現,還難以再現,但是它偏偏就存在於一個隱秘的角落。如我們所見,全球最普及的軟體Windows運行了這麼多年,還是有bug,蘋果手機用了這麼多年,其系統也是有漏洞,所以越複雜的軟體,bug越容易多。

    bug是否達標標準

    既然bug難以全部消除,我們只能儘可能的減少bug。一般來說,我們會以程式程式碼一千行或者一萬行出現的bug比率,作為軟體是否達標的判斷依據。當這個比率降到一定的數值時,我們就認為這個軟體已經合格了。

  • 15 # 程式碼Go說科技

    題主所說的bug,再加上持續時間應該是把需求變更包含在內的。實際生產中,有時功能的缺失不是bug,是規劃的使然。

    程式碼Go理解的bug泛指業務處理中的邏輯缺陷甚至是錯誤。常見的有環境適配問題,邊界值處理缺失,特殊條件遺漏,錯誤理解需求等等。要想避免bug的出現,一是設計時處理邏輯要嚴謹。二是程式設計時語法結構要清晰。三是測試時條件覆蓋要全面。

    生產中出現bug的情況,絕大部分是業務資料造成的。資料又來自千奇百怪的業務場景,沒有實際的業務歷練,程式設計師能一下子想全面,非常困難。此處也告訴大家一個小竅門,一個功能正常運行了很長時間,突然出現問題。首先排查當日做了哪些新的業務,然後再順藤摸瓜,問題很快就會浮出水面。

    最後,程式碼Go告訴大家,要審慎對待產生的bug。以bug的數量衡量一個程式設計師的水平是最不可取的方式。再以一句話與大家共勉,包容程式設計師,善待bug。

  • 16 # 匯聚魔杖

    軟體可能在使用過程中沒有任何問題,但不符合產品的預期

    下圖源自“How projects really work?”,很形象的突出了客戶需要的產品和最終得到的產品不一致。

    因為文字具有二義性,每個人對相同文字會不同的理解,客戶、專案經理、分析師、程式設計師對需求理解的不一致,導致了產品上線執行後不符合預期。這算是一個最大的Bug,有經驗的開發公司會從溝通流程上儘量規避這種可能性,但也沒有辦法完全避免。

    另外在軟體開發途中也會出現各種各樣的Bug。

    這種情況有點像裝修房子,設計公司根據客戶房子的尺寸和結構、朝向、生活習慣等等設計工程圖和效果圖。客戶看到設計工程圖和效果圖後感覺很滿意,馬上水電工、木工、瓦工、油漆工等陸續進場按照設計工程圖和效果圖施工。

    施工完後看起來所有都很正常,驗收的過程中就會暴露很多問題,比如少了一個插座、油漆塗抹不均勻、有的瓷磚沒有貼好等。

    當客戶真正入住的時候,可能還會發現各種當初對設計不滿意的地方,一旦真正使用的時候,就會發現當初應該這麼設計。

    客戶在使用軟體的時候,並不會按照操作流程使用

    這種情況就好比使用“高壓鍋”,使用說明上明明指出先得放氣,才能掀開鍋蓋。使用的人非得先掀開鍋蓋,意外便發生了。

    軟體是按照開發流程一步一步設計的,軟體崩潰了,程式設計師對外行解釋軟體中出現的Bug是不現實的,只有老老實實地去設定阻斷或者更改程式的流程。

    另外軟體使用過程還會出現一些黑天鵝事件,比如網線斷了、伺服器故障、機房網路擁堵等等。這種情況除了在軟體的架構上做冗餘,沒有其他更好的辦法。

    使用者能正常使用,但在使用者看不到的地方有各種異常

    一個軟體有許多的功能模組,並且這些模組並不是同一個人設計的。一個功能模組幾乎不可能獨立執行,必然牽扯到其他模組。對於一個程式設計師設計的其中一個模組所依賴的其他模組沒有辦法保證是100%可用的。

    這時雖然有錯誤,不影響主要的流程,也不影響使用者的正常使用,使用者也不會察覺到,甚至軟體開發人員也沒有察覺到。但指不定使用者使用軟體實現某個功能的時候,軟體就會丟擲錯誤或者崩潰。

    所以軟體想要變得成熟,Bug收集和處理機制是非常有必要的,比如:會影響客戶使用的優先順序高的Bug要優先修復。

    Bug是軟體的影子,也是程式設計師的噩夢

    實際上不能存在沒有bug的軟體,Bug和軟體如影隨形。就像我們使用的Windows,窮盡無數優秀的軟體工程師來設計給使用者優秀的桌面體驗,但也有各種層出不窮的bug。

    程式設計師對Bug有多愛就有多恨,Bug無處不在,即使再牛逼的程式設計師也逃脫不了Bug的魔掌。想要完全避免Bug幾乎是不可能的,所以也不在一次性就寫好的程式。

  • 17 # Huoyo

    其實程式設計師最期望的是沒有bug,誰又不想一次性寫好

    這就好像一個司機所期望的是沒有車禍發生,可儘管再怎麼謹慎,還是會出現各種各種的意外!

  • 18 # 牛經歲月

    首先,程式出現BUG是不可避免的。簡單的說每有一個程式設計師能把所有的CASE都想到,所以,在沒有考慮到的CASE上就不可避免的出現BUG。就連線微軟出個補丁都BUG不停,可見要出一個完全沒有BUG的程式是多麼困難。而且,就算說沒有BUG也是相對的,針對沒有BUG的程式 ,我覺得說還有隱藏的BUG沒有被發現更加準確!

    另外,最主要的是不同的程式在不同的應用場景下,就會產生不同的結果。不同的人使用習慣不同,也會產生不同結果。或者........,總之只要不在程式設計師考慮到範圍之內的CASE都可能出現問題。一個程式給十個人用可能沒問題,給一百人用可能問題立刻就暴露出來了。這也就是為什麼會有專業測試方法和團隊的存在,專業的測試會用科技的方法,儘可能去讓測試CASE二次覆蓋到所有場景,盡最大可能的保證程式最終Release時儘可能的沒有BUG。

    同時,也是為什麼會有單元測試,迴歸測試,UAT等不同階段的測試,這些方法也是最保證程式一步步走向完工和交付前,儘可能的規避由於任何意外動作和改動,導致不同階段正確的測試結果發生變化後沒有及時修正和發現的手段。

    程式設計師的理解需求意識和經驗,測試的CASE編寫和測試,自動化測試的執行,以及軟體專案管理上不停的迴歸、驗證、迭代。所有這些手段綜合在一起才保證了一個系統最終可能合格的釋出部署!

  • 19 # IT小村

    首先,bug呢,作為程式設計師,即軟體開發工程師,也不想有,因為有的話,這對自己的績效考核有負面影響。

    至於你說的想一次性寫好,那是很難的,因為人不是機器,總會犯錯,而程式設計師一犯錯,就是bug了,很多都是編寫程式時,思慮不縝密、用法不規範所導致的。

    其實IT行業裡邊有個職業——測試開發工程師,是專門為程式設計師的程式做測試的,很多都是細心仔細的小姑娘,她們也盡力去發掘程式中隱藏的bug,督促開發者及時修復bug,但是還是有bug出現。

    此外,IT行業裡邊有個職業——架構師,一般都是些工作多年的資深開發,他們在程式上線前也做了程式碼的review,對程式碼的效能、規範等方面做了檢查,督促開發者寫出健壯的程式碼,但是程式中依舊有bug出現。

    以上,經過多個流程才上線的應用,還是有bug的出現,真的是盡力了,人不是神,除非成神了,才能寫出的程式碼,一步到位。

  • 20 # 程式設計師—成長之路

    程式設計師的日常三件事:寫Bug、改Bug、背鍋。這看似是一個調侃,但實際上確實大部分程式設計師日常工作的真實寫照!沒有bug的程式是不存在的,你說沒有,是因為你沒有找到,足夠長的時間,一定能找到的。

    軟體工程的方法論中,要求軟體開發者儘可能多地在軟體測試階段發現bug,而不是交付之後。但是樓主說的能不能讓軟體開發出來沒有bug,我覺得把下面這幾個事情做好,儘量減少BUG,而不是沒有BUG。

    1、花盡可能多的時間,和客戶溝通軟體需求,瞭解每一項需求的用意。

    2、確保軟體需求減少軟體需求變更,因為很多情況下一個需求的變化,程式會帶來很多問題,有可能連底層結構都需要跟著一起變動。頻繁的需求變動,加上開發週期和成本的約束,帶來的結果就是軟體質量的不可控。

    3、確保軟體測試質量,完成全覆蓋測試,設計系統需要的全部用例並保證全部透過。

    把事情一次性做對確實是很有必要的,誰也不想沒事給自己挖幾個坑,但這需要有縝密的思維了,而我相信,這個世界還是粗心的人多點。程式不是一蹴而就地做出來的,Bug也不是一時半會能改完的。

  • 中秋節和大豐收的關聯?
  • 傲嬌師父腹黑徒的作品目錄?