『壹』 大廠程序員提倡「防禦性編程」:故意把代碼寫得很爛,萬一自己被裁,要確保留下的代碼不可維護......
在面對大廠裁員潮時,有部分程序員採取了「防禦性編程」的策略,以確保自己的代碼難以維護,甚至在被裁後,公司可能需要花費更多時間和資源去理解或修改這些代碼。這種做法看似是一種自我保護手段,但實際上卻反映了行業環境的嚴峻性和職場壓力。
「防禦性編程」主要是指程序員故意編寫一些復雜、難以理解的代碼,使得代碼的可讀性和可維護性大大降低。這種策略旨在提高自己的不可替代性,因為在被裁員後,留下的代碼會成為一個潛在的「絆腳石」,公司可能需要額外的時間和資源來解決遺留問題。
這一現象的產生,與互聯網行業巨頭裁員潮有關。在經濟壓力和市場波動的影響下,大廠紛紛尋求成本控制和效率提升,這在一定程度上加劇了職場的不確定性。在這種背景下,程序員們開始探索如何在被裁員時保護自己,而「防禦性編程」正是這種嘗試的一種表現。
然而,這種做法存在爭議。有人認為,這不僅對公司的長期發展不利,也損害了程序員自身的專業形象。實際上,編寫清晰、簡潔、可維護的代碼才是行業發展的正道,因為它不僅有利於團隊協作,還能提高軟體的質量和穩定性。在面對經濟挑戰時,更應該尋求提升自身技能、增強專業價值的途徑。
理性的看待「防禦性編程」,我們可以理解為是一種生存策略,但其潛在的負面影響不能被忽視。長遠來看,這種做法可能對個人和行業都產生不利影響。因此,作為行業和公司,應該關注員工的福祉和職業發展,提供支持和培訓,幫助他們提升技能,而不僅僅是依賴於這種短期的「自救」策略。
實際上,程序員們更希望編寫出優美、無誤、易於維護的代碼。在面對壓力時,他們應該關注提升個人能力、適應行業變化,而不是依賴於「防禦性編程」的策略。作為個人,持續學習和專業成長是應對職場挑戰的更可持續的方法。同時,公司也應該採取積極措施,維護員工權益,創造一個有利於個人和公司共同成長的環境。
『貳』 程序員代碼bug導致銀行損失怎麼辦
程序員承擔。程序員的代碼bug是個人原因,在導致銀行損失後應該由程序員承擔。程序員是從事程序開發、維護的專業人員,程序員分為程序設計人員和程序編碼人員兩種人員。
『叄』 程序員遇到代碼運行錯誤一般是怎麼處理的
程序員遇到代碼運行錯誤,一般會採取以下幾種方式來解決問題:
- 通過搜索引擎來搜索自己的報錯,剛開始往往並不簡單,需要我們有基本的英語單詞儲備,英語不好的同學,要掌握使用各種翻譯軟體來幫助自己提高效率。常見的英語單詞一定是需要記憶的,以便於我們能夠從眾多信息中,找到關鍵的部分進行搜索。接著就需要正確識別你的問題,在一般情況下在報錯的最後一段都會給出具體的提示,我們只需要直接網路這一行即可。對於新手來說大多數是SyntaxError、KeyError、AttributeError、MoleNotFound等常見錯誤,這些問題往往在搜索引擎的前三個帖子就可以找到答案。
- 通過查看代碼來找出問題所在。如果你對代碼不是很熟悉,那麼查看代碼就是一個很好的方法。如果你不知道某個變數或函數在哪裡定義,那麼查看代碼也是一個很好的方法。
- 通過調試來找出問題所在。調試是一個非常好的方法,因為它可以讓你看到程序執行過程中每個變數的值以及每個語句的結果。
- 通過詢問其他程序員來解決問題。如果你無法解決問題,那麼詢問其他程序員也是一個不錯的選擇。
『肆』 作為一個程序員,我發現同事寫的代碼有Bug,怎麼辦
作為一個程序員,你發現同事寫的代碼有Bug,你會告訴他嗎?講真的,這個事情對我來講,很難,因為我在這個事情上吃過苦頭!
看待這個問題首先得看對方脾氣咋樣,如果對方脾氣不好,或者很難搞,還是想想其他辦法。直接跟他講可能會遭到對方的白眼!
別看我們程序員一個個傻傻獃獃的,其實自尊心特別強!除非你是他的領導,否則即使你發現了他代碼里的Bug,他也不會服你!雖然還是會改,但內心一定在想:「就你能?自己管好你自己就成,看我代碼幹啥?」
其實我也是這樣的心理,好像程序員除非自己願意,否則都不怎麼喜歡別人去研究自己的代碼,好像對方故意找自己茬的意思。
但是不管咋樣,不管是有意無意,我們既然發現了同事寫的代碼有問題,就不能坐視不管!
我最近在調一個小夥伴的介面時,因為涉及到數據回滾,所以就想知道他的代碼有沒有做回滾操作。如果沒有,可能我這邊數據已經回滾了,他那邊沒回滾就會導致數據前後不一致。所以我也不是有意要審查他的代碼。
然後我就發現他不光沒有做回滾操作,也沒有做批處理。幾個涉及到修改數據的代碼就這樣一行一行走下來,看著直讓人撓後腦勺。
於是我就把這個事情告訴了他,讓他要麼做事物(如果操作有問題,可以自動回滾),要麼做主動回滾。否則我在調他介面時,如果我這邊撤銷了數據修改,他那邊卻提交了修改,就會導致數據丟失或前後不一致。
當我告訴他這個情況和解決方案以後,我能很明顯地感受到他有點不愉快。但事實擺在眼前,也只能修改。可修改歸修改,他還是有點脾氣的。於是他寫了一個事物,將大部分涉及到增刪改的語句全部包在了裡面,唯一把一個刪日誌的語句留在了外面。
我看到這個情況,就委婉地跟他說:「」好像這個刪日誌的語句也要包在事物裡面哦!」
但是他卻說,這個無關緊要,他特意放在外面的。
我跟他說,既然這里有數據存在,就不是無關緊要的。不管咋樣,也不能無緣無故就把數據給刪了。但是他很倔強,執意不改,還說如果我覺得這個數據有用,那就讓我自己「順手」把這里的代碼改一下。
此時我能明顯地感受到他已經有點煩我了!無奈之下,我把這段代碼給移動到了事物裡面。
而我為什麼說我因為發現同事代碼有Bug告訴同事而吃過虧呢?
原因在於我之前待過的一家公司,有一個工作了幾年的程序員同事,而我當時是個萌新。因為我專門培訓過,所以代碼能力還行。可這個同事雖然工作了幾年,但寫出來的程序代碼卻Bug一堆,常規測試手段還測不出來。
我是在偶然之間發現他寫的一個程序是有Bug,但是又不確定,所以就想看看他代碼是咋寫的。不看不知道,一看嚇一跳,他寫的好大一部分代碼都有問題!
我當時初生牛犢不怕虎,發現一個跟他說一個,結果最後把他給惹毛了,當場就要跟我動手,說我專門針對他。我哪有針對他的心呀!我當時想的是把這些Bug找出來,讓他改掉,否則對公司也不好。
但是他想的估計是被我這個萌新發現了一堆Bug很丟人。我總是針對他的代碼找Bug,他就是脾氣再好也綳不住啊!
後來我們的部門經理為了不讓他難堪,也為了給他個台階下,找了我寫的程序里的一個缺點,猛批了下,然後跟大家說:「我剛才看了看,大家寫的代碼有好多問題。這樣,大家都各自檢查一下自己的代碼,看看有沒有問題,有問題盡快改過來,然後我們統一測試!」
直到現在,我也沒學會當發現同事代碼有Bug以後,在不讓同事產生不愉快的心理的情況下,委婉地告訴同事他代碼寫的有問題的方法。
『伍』 當程序員寫不出代碼了,該怎麼辦
你已經對著電腦n個小時了。不知道該寫什麼代碼,或者一種摔鍵盤的沖動正在你的胸中醞釀。
咖啡一杯接著一杯。不敢再喝了,因為搞不好要有副作用了,心跳加速,身體不由自主地顫抖,出冷汗,但還是無法產出任何代碼。
所有重新發現編程趣味的努力都徒勞無功,因為你的最後一點能量都用來驅逐大腦中正在攻城略地的話:
「我寫不出代碼了!」
編程的本質是棘手
即使是最優秀的程序員也會遭遇無法解決的軟體工程問題。碰到這樣的問題,並不一定意味著你缺乏技能或知識。
編程不是一項容易的工作,我們可以通過採取非正統的方法來保持你想要的生產力水平,並確保提交高質量的代碼。
如果我在一個問題上花了幾個小時,卻仍然找不到解決方案的話,最後我會覺得這是浪費了時間。我不是胡言亂語——我只是覺得「沒有人能夠百死不悔」。
沒有憤怒和悲傷。因為我已經嘗試過所有方向,只是都走不通而已。失去希望,於是開始想辭職不幹。我覺得自己應該換工作,去做做調酒師或其他,至少研究和測試在啤酒中加點什麼不會耗去我數個小時的時間。
這些都是我在不敲代碼時的想法。我開始懷疑生活,懷疑編碼,懷疑人生。
有成效不?好吧,我從來沒聽任何專家說過「辭職和萎靡不振」可以造就偉大的代碼,所以可能並沒有成效。
這就提出了一個問題:我們該如何避免這種沒有成效的狀態?
重新發現問題,重新發現你的生產力
可能你已經行進在這條路上了。那麼此時你只要繼續就可以了,我可能沒有什麼新的東西可以告訴你的。
如果你是新手,那麼可能你還不知道如何重新發現生產力。
下面我要分享的內容將有助於你在編程時以一種健康的方式保持生產力,不至於筋疲力竭。主要包括:
測試不同的解決方案,直到感覺重復
在線尋找開源解決方案
向更有經驗的程序員詢問
如果一切都失敗,那就瀟灑放手
1_測試不同的解決方案,直到感覺重復
在你研究或詢問其他開發人員(=浪費他們的時間)之前,你應該嘗試使用你現有的知識和思維來制定每一個可能的解決方案。
顯而易見的是,太多的程序員是從詢問他人開始的,自己甚至都不曾靜下心來分析問題本身。不要成為這樣的討厭鬼,盡可能不要浪費別人的時間。
先投身於工作,然後再尋求幫助。
2_在線查找開源代碼
當你投入於工作,卻沒有什麼成果的時候,那麼下一步你可以嘗試開源代碼。許多編程人員構建軟體,是出於創造解決方案並在線發布以供大家使用的樂趣。有些人發布的代碼曾被它們的程序員使用於商業項目。
GitHub是尋找開源代碼的兩個主要地方之一。另一個是StackOverflow。
這些網站的解決方案是採用可重用代碼的形式,方便你在項目中實現。
謹記,使用其他人開發的代碼總是有風險的。它可能會以你意想不到的方式改變程序的行為。備份原始代碼,這是常識。
3_向更有經驗的程序員詢問
你有沒有碰到過這樣的情況,向其他人求助卻發現你甚至不知道自己在問什麼?
在詢問任何人之前,你得准備好一些你無法通過網路信息搜索解答的問題。
明確的問題,才能有明確的解決方案。如果是你自己都描述得雲里霧里的問題——那麼你只會得到一個雲里霧里的回答(並且可能會惹惱他人)。
如果你周圍沒有任何開發者可以詢問,那麼也可以在線查找。你可以在社交論壇上詢問,或查找特別針對於你所用技術的頻道。
4_如果一切都失敗,那就瀟灑放手
不要一心鑽在死胡同里,實在不行,那就去干點別的事——睡覺,吃東西,等等。
你覺得這是在逃避工作?那就錯了。
我要告訴你的是,當你最輕松的時候,往往正是解決辦法靈機一現的時候,這不是我胡編亂造的,而是有科學的證明。此時你的大腦工作在「發散思維」的模式下,而不是在「集中注意力」的模式下——你可以在這篇文章中了解之間的差異。
總的來說,這個理念就是要你忘記手頭的問題,讓你的意識心靈沉浸到其他的事情中。此時,你的潛意識則開始連接要點,朝著頓悟的方向前行。
我們可以做些什麼以便於幫助大腦在發散思維的模式下工作呢?放輕松就好了:
散步(古代哲學家非常習慣於在走路時演講,因為他們意識到走路有助於思考)
清理辦公室或住所(完成後給自己一個獎勵)
與朋友約會,喝杯咖啡,聊聊八卦(如果你過於關注問題的話,那麼建議和不能提供幫助的非編碼人員交談)
總結
我在編程和生活兩者之間保持了一種健康的平衡。
無論你是為了興趣愛好、錢還是改變世界的宏圖偉業而選擇編程——編程都不應該是你唯一痴迷的東西,否則你會走火入魔。
最後再說一句,如果你絞盡腦汁,卻仍然無法解決問題,那麼不妨先放一放。通過潛意識的運作,搞不好突破性的想法就會靈光乍現。
感謝大家閱讀由java培訓機構分享的「當程序員寫不出代碼了,該怎麼辦?」希望對程序員們有所幫助,更多精彩內容請關注Java培訓官網
免責聲明:本文由小編轉載自網路,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除
『陸』 為什麼有的程序員的代碼結構混亂
程序員都有一顆工程師的心,所以當他們到一片新的場地想做的第一件事就是,將舊的一切推倒重來。是的,他們決不會滿足於簡單的增量勞動。
或許這種微妙的心理定位可以解釋:為什麼程序員進入新項目組後寧願丟掉舊代碼重新寫,也不願意修修補補。他們認為舊代碼簡直一團糟。
但是,事實上真是這樣嗎?你之所以認為舊代碼一團糟,其實是由編程的一個基本定律決定的,那就是:寫代碼容易,讀代碼難。
為什麼你覺得舊代碼異常混亂?因為讀代碼更難。
這大概就是代碼Reuse難以實現的原因。 這就是你組里的每個人都喜歡用不同的功能將分割的字元串轉換成一個數組。比起猜測舊的功能是怎樣實現的,重新寫一個自己的功能要簡單和有趣多了。
作為這個公理的推論,你可以問問身邊的程序員他們正在奮戰的代碼怎麼樣?「簡直是一塌糊塗!」他們肯定會這樣說。「我簡直想推倒重來!」
為什麼認為代碼這么糟糕呢?「額,看看這個功能,竟然有兩頁長!完全不知道這些東西為什麼在這里!完全不知道這些API是干什麼的。」他們會這樣回答你。
漫畫:讀別人代碼是一種怎樣的體驗?
曾經,Borland的創始人 Philippe Kahn當初就是向記者們吹噓:Quattro Pro會比Microsoft Excel要好用得多,因為它是從頭開始編寫的,全部都是新的源代碼!
但是,認為新代碼比舊代碼好簡直就是荒謬。舊代碼是已經運行過的,測試過的。無數的bug在被發現前都上線運行過,發現之後程序員們可能在花了好些日子才修復了這些bug。這種修復可能是一行代碼,也可能是幾個字元,無數的時間和精力都花在了這些bug修復上。
當你決定拋棄這些舊代碼從零開始的時候,你也丟掉全部前任努力的結果。
新代碼一定比舊代買好?NO,重寫可能會帶來更大的風險。
對技術領導者來說,重寫項目的代碼也是一個異常艱難的決定。因為從公司層面說,重現代碼甚至會威脅產品的市場競爭力。一旦決定重寫代碼,那麼與競品相比,你可能落後了2~3年——在軟體行業,這時間可夠長的。
你理想中的新代碼會帶來產品功能的提升▼
但事實上,即便重寫的新代碼可以實現舊代碼的所有功能和需求,但是為產品帶來的市場競爭力只有邊際提升。因為重寫用的新技術、新語言、新框架並沒有給產品帶來質的飛躍。
更不用說在重寫的漫長過程中可能會遇到一些意外情況,比如:
1、缺錢:資金鏈的斷裂▼
2、缺人:核心程序員離職
最終導致效果不佳:達不到原產品應有的所有功能和需求,白白浪費了時間和金錢,也丟掉了市場競爭力。▼
所以重寫代碼意味著,你在把自己置身於非常危險的境地,可能幾年後你也寫不出比以前更好的代碼。你只是花了一大筆錢把已經存在的代碼又寫了一遍。
當你覺得眼前的舊代碼很爛時,該怎麼辦?
你覺得舊代碼寫的很爛,那又怎樣呢?它們已經上線,已經在實際運行中經受住了考驗。所以當你發現前任留下的代碼亂七八糟的時候,不妨冷靜下來,從以下三個方面入手理解代碼、改善代碼:
1、代碼的結構有問題
如果一段網路代碼突然彈出了自己的對話框,應該是UI代碼需要被處理。這些問題可以被解決掉,你要一次次小心地移動代碼,重構,改變介面。還需要一位細心的工程師立馬仔細地檢查這些改變是否有問題,從而不打擾到其他人。事實上,甚至比較大的結構變化也可以不扔掉代碼來完成。
大牛程序員Joel Spolsky回憶說,曾經在某個項目中,他和他的團隊花了好幾個月重新架構在一點上:把代碼動來動去、清理、創建有意義的基類,並創建了模塊之間的完美介面。但是他們始終非常小心翼翼,並沒有產生新的bug、也沒有丟掉任何舊代碼。
2、代碼的效率不高
曾經,Netscape的渲染代碼被傳非常緩慢。但事實上,這只會影響該項目的一小部分,這部分是你可以優化甚至重寫的。你完全不必重寫全部代碼。優化速度的1%工作量,會讓你獲得99%的爆炸性提高。
3、代碼寫得很醜
有些代碼真的寫的很醜,比如Joel曾參與一個項目,開始用下劃線做開始的成員變數約定,但後來改用更標準的「M_」。所以一半的功能用「_」開始,一半用「M」開始,這看起來真的很醜陋。但這個問題5分鍾就能解決,而不用從頭開始寫全部的代碼。
最後,你要記住,從頭開始再寫一遍並不意味著你會寫出比以前更好的代碼。因為你沒有參與到上一個版本的創建,所以你其實根本就不算有經驗。一旦你准備推倒重寫,你可能會再犯一遍版本一犯過的錯,甚至會產生更多的新問題。
一個總結:
面對糟糕的舊代碼,Keep Calm & Carry On !
在大型商業項目中,推倒重來是非常危險的行為。當然,如果你是在做實驗,想到新演算法可以隨時重寫。