❶ 我是程序員,敲代碼時間長了,有時會出現手指活動不靈活的現象,怎麼辦
學習一下《硃砂掌》裡面有關於練習和手相關運動的。。。
❷ 為什麼大家都說程序員需要好鍵盤
一般我們只要是到網路公司去觀察一下,寫代碼的程序員都應該是自帶鍵盤的,而且都是價值非常昂貴的機械鍵盤,一把鍵盤的價格都在百元以上,有的甚至要上千元,那為什麼程序員就必須需要一把好鍵盤呢?
首先我們應該了解一下鍵盤的種類,大致在市面上能看到的鍵盤一般分成兩種,一種就是我們最常見的薄膜鍵盤,而另外一種就是廣受文字愛好者所歡迎的機械鍵盤,一般我們在市面上能看到的幾十塊一把的低端鍵盤,或者辦公鍵盤都是薄膜鍵盤,在鍵盤的內部沒有什麼機械結構,只有一個薄膜的電路板和觸電,相對來說成本較低,而且鍵盤非常輕薄,但是沒有什麼手感,對於需要大量鍵盤錄入的程序工作者來說,薄膜鍵盤明顯不能適用於程序員,雖然薄膜鍵盤輕薄,但是手感全無,手指按壓沒有段落感,在打字的過程當中長期的按壓會造成或多或少的誤觸,加上薄膜鍵盤的特性,所以在快速按鍵的過程中很容易會出現串鍵等情況,這對於一個寫代碼不能出錯的程序員來說簡直就是災難,如果要為這一個字母的錯誤,在幾千行的代碼中尋找。是多麼痛苦的一件事情。而價格昂貴一點的機械鍵盤就不一樣了,每個按鍵獨立的機械結構完全不存在鍵盤的誤觸與串鍵方面的問題,加上機械結構的按鍵使得手指每一次按下去都存在段落感,手感極佳。
而且一般薄膜鍵盤在長期使用之後,內部的電路板發生氧化,手指敲擊鍵盤的力度就會需要不斷的上升,這也需要使用者不斷的調整使用鍵盤的習慣,造成了非常不便的影響。而機械鍵盤就完全不存在這樣的情況。有的人會說,機械鍵盤由於結構上的原因,在打字的時候會有噼噼啪啪的響聲,影響打字者的思考,但是一般的程序員在打代碼的時候都是已經考慮好了,只需要機械化的輸入,清脆的按鍵聲還哦能帶來更愉悅的享受,所以這個方面的問題基本上是不存在的。
所以程序員是絕對需要一款好的鍵盤來裝備自己的,但是如果你是一個需要在打字的時候思考的文字工作者,那麼更加高端的靜電容鍵盤更加的時候你,結合了機械鍵盤的手感,而且由於沒有觸電,也不會產生噼噼啪啪的雜訊,當然價格方面也是相當的昂貴。
❸ 程序員這個工作有哪些職業病
程序員有很多職業病,比如說頸椎病、滑鼠手、駝背、乾眼症等等。
三、皮膚乾燥是絕大部分程序員都會存在的皮膚問題,比如說青春痘、過敏等,因為程序員長期需要熬夜,而且電腦上由於靜電的影響經常會吸附很多的灰塵,久而久之就會造成皮膚乾燥、過敏等症狀。背部問題也是常見的職業病,主要表現在駝背,因為在寫代碼的時候需要長時間保持一個姿勢,而且很多程序員都沒有養成良好的坐姿,這樣就會出現脊背彎曲,所以當一名程序員一定要養成良好的習慣,才能讓職業病遠離你。
❹ 上班族和程序員大大們,分享一下,滑鼠鍵盤用的太多導致的手指關節疼痛怎麼解決
滑鼠手造成的指關節疼痛,不是一朝一夕形成的。同樣,也不可能一下子就可以改善得了。
平時自己要多注意,久不久就要刻意去活動一下自己用滑鼠這只手的指關節。
可以兩手相扣,做對向的圓周活動;再就是用左手來幫助右手做指關節的局部活動。
❺ 程序員的手是不是都容易得滑鼠病啊怎麼預防呢
呵呵,這個問題問的很實在。滑鼠病又叫滑鼠手,常用電腦的話當然是難免的。對此,專業醫生的作答是:長期使用電腦和滑鼠,容易得滑鼠手(即腕關節綜合征)。
其致病原因是,長期使用電腦鍵盤和滑鼠,可能與一種稱為腕關節綜合征的疾病有關,出現食指或中指疼痛、麻木和拇指肌肉無力感,發展下去可能導致神經受損,進而引起手部肌肉萎縮。問題出在每天重復在鍵盤上打字或移動滑鼠,手腕關節長期、密集、反復和過度活動,導致周圍神經損傷或受壓迫,使神經傳導被阻斷,從而造成手掌的感覺與運動發生障礙。另外,肘部經常低於手腕,而手高高地抬著,神經和肌腱經常被壓迫,手就會開始發麻,手指失去靈活性,經常關節痛。手指頻繁地用力,還會使手及相關部位的神經、肌肉因過度疲勞而受損,造成缺血缺氧而出現麻木等一系列症狀。據調查,女性發生「滑鼠手」比男性多,這是因為女性手腕通常比男性小,腕部正中神經容易受到壓迫。
緩解方法:
1. 盡量避免上肢長時間處於固定、機械而頻繁活動的工作狀態下,使用滑鼠或打字時,每工作一小時就要起身活動活動肢體,做一些握拳、捏指等放鬆手指的動作。
2. 使用電腦時,電腦桌上的鍵盤和滑鼠的高度,最好低於坐著時的肘部高度,這樣有利於減少操作電腦時對手腕的腱鞘等部位的損傷。
3. 使用滑鼠時,手臂不要懸空,以減輕手腕的壓力,移動滑鼠時不要用腕力而盡量靠臂力做,減少手腕受力。
4. 不要過於用力敲打鍵盤及滑鼠的按鍵,用力輕松適中為好。
5. 滑鼠最好選用弧度大、接觸面寬的,有助力的分散。
6. 使用滑鼠時配合使用「滑鼠腕墊」墊在手腕處。
7.業余時間應該多多參加活動和運動,特別是上肢運動和伸展運動。
動作1:用手錶做輔助器械,按順時針和逆時針轉動手腕25次。
功效:緩解手腕肌肉酸痛感覺。
動作2:手握帶有負重的水瓶,首先手掌向上握水瓶,做從自然下垂到向上抬起動作,然後是手掌向下握水瓶,做從下到上的運動,各25次,鍛煉腕屈肌。
功效:防治腕關節骨刺增生,增強手腕力量。
動作3:舒展身體各部位時,也要用力展開雙手的五指,每次20至30秒鍾,做2至3次。
功效:增強關節抵抗力,促進血液循環。
動作4:吸足氣用力握拳,用力吐氣,同時急速依次伸開小指、無名指、中指、食指。左右手各做10次。
功效:鍛煉手部骨節,舒緩僵硬狀態。
動作5:用一隻手的食指和拇指揉捏另一手手指,從大拇指開始,每指各做10秒鍾,平穩呼吸。
功效:促進血液循環,放鬆身心。
動作6:雙手持球(如網球),或持手掌可握住的事物(如水果等),上下翻動手腕各20次。球的重量可依自己力量而定。
功效:增強手腕力量,鍛煉肢體協調能力。
動作7:雙掌合什,前後運動摩擦致微熱。
功效:促進手部的血液循環。
肩部:左手臂向右拉伸時,頸部向左拉伸,注意手臂不要過高,和胸部有一定距離,不要有壓迫感。每次保持30秒至45秒,換右手臂
❻ 如何提升程序員的代碼編寫能力
一、先列三個常見的開發場景:
1、拿到一個模塊詳細設計文檔,大部分程序員的通常做法就是開始搭建界面代碼,然後從第一個按鈕點擊事件或頁面Load事件開始寫第一行業務代碼。寫的差不多了,就運行一下,發現哪裡不是自己想的那樣,就改改,直到改到是自己預想的那樣。
2、做完了一個功能模塊或幾塊相關聯的功能模塊,輸入111asd,發現新建正常、保存正常,就提交給測試人員。測試員用測試用數據、測試場景用例來測試,發現有問題,就登記bug。對於嚴重的影響下一步測試的BUG,測試員就用內部IM通知這個開發人員。對於不影響繼續往下測試的BUG,測試員就登記下來,等程序員有空時處理。
3、程序員一般工作不希望大家打擾,所以開發起來就是開發。等手頭開發告一段落,就看看BUG庫。發現有與自己有關的BUG,就從第一個BUG開始看起。就開始通過IM和測試員掰扯起來(這不是個BUG啊、業務邏輯不是你想的那樣啊、我這里不能重現啊、你給的信息描述不清晰啊),於是IM幾來幾往,甚至跑過去當面交流一番,甚至會拉扯上產品經理一起討論,更甚者需要項目經理或產品經理發起一個會議來集體討論一下
這是不是很熟悉呢?這就是大部分程序員開發的三個步驟:寫代碼、自測、修復BUG。
二、說好的代碼設計、代碼測試呢?
代碼設計?那不是都有開發平台么,已經固化了啊。那不是維護舊功能做完善修改呢么,又不是寫新代碼,只能在現有代碼基礎上修改啊,你又不能大幅重構。
代碼測試?你丫需求討論期、產品設計期、設計評審期那麼長,都把研發項目時間佔光了,就留下2個星期讓我們寫代碼,我們哪裡有時間搞那麼深的測試。還想讓我們搞結對編程?還想讓我們搞測試驅動開發?
而且你看測試,什麼功能測試、集成測試、性能測試、安全測試、安裝部署測試、升級測試、遷移測試、UAT測試,一大堆測試,測試也需要很多時間。
一個項目,需求討論、產品范圍規劃與評審、產品設計與設計評審佔了一個半月,開發+自測就一個月,測試佔了一個半月,這就4個月了啊。
三、為啥程序員寫代碼總是寫寫測測?
剛才大家也都看到了,大部分程序員都是從界面代碼開始寫起,而且寫一寫,就運行一下看看。為什麼會是這種開發方式?
那是因為大部分程序員缺乏在腦子中的整體建模能力。只能做出來一點,真實的感覺一下,然後再往下。
有些是產品經理的上游就有問題,沒給出業務流程圖(因為產品經理也沒做過業務),也沒畫清楚產品功能操作流程圖。
為啥沒給出業務流程圖?因為產品經理不熟悉業務,另外,產品經理也沒有流程建模能力啊。為啥沒畫清楚產品功能操作流程圖啊?因為不會清晰表達流程啊。
很多產品經理、程序員,都缺乏分類、分層、相關、先後能力,更別說總結、洞察能力。
這是基本訓練,是一個做事頭腦清醒的人必備的技能,這不是一個程序員或產品經理或測試員的特定技能要求。
我經常看書就梳理書的脈絡,每看一本就寫一篇總結。我過去閑扯淡還梳理過水滸傳、紅樓夢的人物關系圖呢,其實就在事事上訓練自己的關聯性、層次性、洞察性。
我經常面試一個人時,我會問這樣的問題:「你把我剛才說的話復述一遍,另外你再回答一下我為什麼會這樣?」,其實,我就在看一個人的細心記憶、完整梳理、重現能力,我也在看一個人的梳理、總結、洞察能力。
我個人寫代碼就喜歡先理解業務流,然後理解數據表關系,然後理解產品功能操作流,大致對功能為何這樣設計、功能這樣操作會取什麼表、插入或更新哪些表,哪些表的狀態欄位是關鍵。
然後我寫代碼的時候,就根據我所理解的業務流、功能操作流、數據輸入輸出流,定義函數,定義函數的輸入與輸出。
然後,我會給函數的輸入值,賦上一些固定值,跑下來看看能否跑通這幾個關聯函數,看看還需要怎樣的新增函數,或者看看函數的輸入輸出參數是否滿足跑通。
剩下的事,就是我填肉寫詳細邏輯代碼了。
當然,大部分人沒我這樣的邏輯建模能力。怎麼閱讀理解也想像不出來,也沒法定義函數。畢竟有邏輯建模能力的程序員都很少,100個人里有10個,已經是求爺爺告奶奶好幸運了。
那怎麼辦呢?
我建議是分離分工配合,這就是現實中沒辦法的辦法。讓有邏輯建模能力的人來設計函數框架、來設計工具來設計代碼模板,然後讓沒有邏輯建模能力的人來填肉寫詳細邏輯代碼。
我們可以先從最緊要的模塊開始這么做。不緊要的模塊,還讓它放任自流,讓熟練手程序員繼續塗抹。
我曾經還讓有頭腦的程序員做榜樣,給大家分享他是怎麼規劃函數的,怎麼做維護性代碼的代碼結構改善的。但是發現效果並不佳,其他人並沒有因此能做代碼設計。可能邏輯建模能力是個人的基本素質,是從小到大訓練成型的,不是你一個大學已經幾年的人能夠短時間內可以訓練的。
所以啊,還是讓能走的人先走,讓從最緊要的模塊開始這么做。
不必擔心這樣做後,因為過去一件事被分工(一個做代碼框架一個填肉)成兩個人做了會降低工作效率。我們很多的工作效率低就是因為半瓶子醋搞出來的,來回反復修改。
真是應了劉德華在電影里說的那句話:說你又不聽,聽又聽不懂,聽懂了又不做,做又做不好,做不好還不服氣。
四、為什麼大部分程序員不做代碼測試或白盒測試或單元測試呢?
還是因為沒有代碼設計。因為沒有函數啊。所以,一個按鈕功能有多復雜,代碼就有多長。我見過2000行的函數,我也見過1000多行的存儲過程和視圖SQL。怎麼做白盒測試啊,這些代碼都粘在一起呢,要測,就得從頭到尾都得測。
所以啊,先學會設計函數,先寫好函數,這就求爺爺告奶奶了。很多開發了5年的熟練手程序員,可能都未必會寫函數。
函數的輸入輸出值就很有講究。很多人都寫死了,隨著版本迭代,發現過去定義的函數參數不夠用了,於是就新增了一個參數。然後,相關性異常就爆發了,其他關聯的地方忘改了,到底哪些有關聯,怎麼查啊,本系統沒有,沒准其他系統就調用你了,你根本不知道哪個神經人曾經COPY過你的代碼修吧修吧就改成了他的功能呢,而且裡面的很多代碼他看不懂也不敢刪,只要他實現的功能正常了他也不管了。於是,你改了你這個函數,他的系統就莫名出錯了。
所以,我一般會定義幾個對象來做參數。另外,我也很注重函數的日誌、函數的異常保護、異常拋出、異常返回。另外,我也很注重參數輸入值的合法性校驗。
所以啊,應該開發Leader們先制定函數編寫規范最佳實踐,輸入輸出參數怎麼定義比較好,函數的返回值如何定義比較好,函數的日誌記錄應該怎麼寫比較好,函數的異常保護、異常拋出、異常返回如何寫比較好。先教會一般程序員,先從會寫函數開始啊。
當然,你光有一份規范,程序員們還是不理解、不實際應用啊。所以,還得Leader們做好典型的代碼模板,裡面是符合函數規范的代碼框架,只有這樣,一般程序員們才會照貓畫虎適應了函數設計的編程習慣。
所以啊,我專門重新定義了leader的明確職責,其中第一個重要職責就是:負責工具/框架/模板/規范的制定,並且負責推廣且普及應用落地。
你不明確定義Leader的這個重要職責,你不對這個職責做明確的KPI考核,誰尿你啊。你以為好的工具/框架/模板/規范是靠人們的熱情、自發產生的么?我們還沒有那麼自覺高尚啊。
五、為什麼大部分程序員不寫注釋啊?
我經常說一句話,千萬別多寫注釋。為啥?
因為我們經常遇到的問題不是沒有注釋,而是更糟的是,注釋和事實代碼邏輯是不相符的。這就出現常見問題了:殘存下來的設計文檔是一個邏輯、注釋是一個邏輯說明、真實代碼邏輯又是一個,鍾表多了,你也不知道正確時間了。
所以啊,產品文檔、注釋、真實代碼,三者總是很難一致同步。我為了幾百人研發團隊能做到這個同步花了大量心血和辦法,但我最終也沒解決了這個問題,還把Leader們、總監們、我都搞的精疲力盡。
索性回歸到一切一切的本源,代碼,就是程序員的唯一產出,是最有效的產出。那麼,讓代碼寫的不用注釋也能看懂,咱得奔著這個目的走啊。
為啥看不懂,不就是義大利面條式代碼么,又長又互相交雜。
OK,我就規定了,每個函數不能超過50行。用這一個簡單規定和靜態代碼檢查插件,來逼迫大家嘗試著寫函數。有的函數屬於流程函數,是串起其他函數的,有的函數就是詳細實現函數,實現一個且唯一一個明確作用的。
有了流程函數和功能函數,而且每個函數不超過50行,這就比過去容易看懂了。
六、為什麼大部分程序員不抽象公共函數啊?
我經常說一句話:千萬別抽象公共函數啊。為啥?
因為大部分程序員缺乏抽象洞察能力。特別是有些積極熱情有餘、愛學習愛看書、半瓶子醋晃悠的二桿子,看了幾本UML、重構、設計模式、整潔代碼之道,就躍躍欲試了,還真敢給你抽象公共函數了。
一開始,他覺得80%相似,20%不相似,於是在公共函數裡面簡單寫幾個if..else做個區隔就可以。沒想到,越隨著版本迭代,這些功能漸漸越變越不一樣了,但是這個代碼已經幾經人手了,而且這是一個公共函數,誰也不知道牽扯多少,所以誰也不敢大改,發現問題了就加一個if..else判斷。
沒想到啊沒想到,這個本來當初公共的函數,現在變成了系統最大的毒瘤,最復雜的地方,誰也不敢動,除非實在萬不得已,手起刀落。
所以,我平時告誡程序員,純技術的、純通用的,你們可以嘗試搞搞抽象公共函數,對於業務的,你們還是簡單粗暴的根據Leader們做的代碼模板代碼框架,乖乖的復制、修改、填肉吧。
你們啊,先從做模板做代碼片段開始吧,咱們放到咱們內部代碼片段開源庫里,看誰的代碼片段被別人復制的多,說明你的代碼抽象設計能力越好了。那時候,我就大膽放心讓你撒丫子跑了。在沒有學會跑之前,給老子乖乖的復制、修改、填肉吧。