每乙個c語言的初學者總是懷揣著對新大陸的無限熱情(這**於科幻大片對現代計算機技術的放大性的渲染,這使得90後對黑客神秘技術背後充滿了極大的好奇)然而現實總是帶感的(尤其是骨感)這就不得不要吐槽一下菜鳥的辛酸入門了。
首先面對正式的c語言課程,第一問題自然是碼**的規範性。深深的記得第一次叫老師來看我**的情況,當時老師只丟下一句太難看了我不看便轉頭就走。當時我那個鬱悶呀,心中還不服地再次審視打量了一下我的**(自戀地覺得蠻漂亮的)又不要臉地讓旁邊同學評價一下。結果人家沒空理我,讓我看老師的課件。這才發覺上課沒聽講的嚴重後果(在此反思除非你真的讓別人挑不出刺,否則請虛心聽講)
1、 可讀性(readability)
//首先**不是只寫給你自己看的,它需要給別人看,而且應該必須讓別人能夠輕易的讀懂,而不是花費大量時間來揣摩。從軟體工程的視角來看,我們以後面對的絕不是幾十行又或是幾百行**,而是大量的,而且這些工作都由乙個人來完成顯然也不現實,這裡就必須強調合作,這時可讀性的重要性就體現出來了。
2、 正確性(correctness)
//首先意味著你寫的程式要能通過編譯器的編譯,當然這並不意味著就高枕無憂了,最讓你爽到不行的錯誤常常不會這麼輕易的就被發現。c語言號稱面向過程,字面上我理解,就是要求程式設計師能夠清晰的知道自己程式的執行過程及一些變數在執行時的變化。當然這種能力是要經過大量練習的,初來乍到的菜鳥自然經常被自己忽視的小細節搞死。這就要求我們程式設計的時候能夠考慮到最大最小及異常的情況。排錯向來是一件很帶感的事情,初次使用英文版的codeblocks連最基本的報錯資訊都認不全(此處我想加個聊天常用的苦笑表情)請不要鄙視我(英語水平有點帶感)編譯器不報錯的暗雷更是讓你嗨翻天,幾個小時的折磨也是常有的。好了重點來了,我們要學會測試我們的**,通常是考察異常輸出的上下文,當然光是看是看不出點什麼的,我們需要將這些東西顯化(即讓你能看出來的那種)比如你可以加上一些必要的輸出,讓你得以觀察某變數全域性的變化過程,這通常是很有效的,其他的測試手段當然我也還在學習中。
3、 魯棒性(robustness)
robustness 魯棒性,魯棒性 (電腦科學),穩健性 (經濟學)
robustnesscheck 性分析,穩健性檢驗
mechanicalrobustness 機械健壯性,機械強度
應對使用者的錯誤輸入(人非聖賢孰能無過,當然有時候就是想搞崩你,你能把我怎麼樣)當然使用者都是善良的,但你的程式應該具備基本的應對能力,及有報錯功能就像編譯器給你報錯一樣。你這種好心的提醒會讓使用者對你感激不盡的(當然我們常常是對編譯器報錯是痛惡的,這意味著又得忙活了,還會忍不住罵一句,**這都過不了)但為了使用者的最終幸福,完善自己的魯棒性吧!(想扯一句班群流傳的梗:去吧,比卡丘。此處應有@)
4、 擴充套件性(scalability)
//主要考慮從以下三個方面擴充套件:輸入/計算/輸出
關鍵是能夠做到分離,讓它們的關聯盡可能降低,即分配任務大家都各司其職最後每個人只要交乙個簡要總結就好了。
例儲存可以利用資料結構,計算利用統一的演算法(這樣的演算法要能夠解決一類問題而不是某個特定問題),各部分的介面要標準要規範統一,以便實行移植改造。
原諒我有些廢話和逗逼,所謂越是辛酸越要執著前行。盡情期待我血淚史的更新吧!你將見識各種奇葩的死法,各種排錯的爽歪,最重要的是你將見證一代傳奇碼農如何從菜鳥開始蛻變。
下期再見!!
菜鳥初來乍到!請多指教!
這個作業屬於哪個課程 這個作業要求在 homework 11147 這個作業的目標 建立自己的部落格並使用 markdown寫一篇部落格進行提交 我是一枚大三菜鳥,雖說我已經大三了,但是我的程式設計水平可能還不如大一的同學們,不要問我為什麼會這樣,我只能流著眼淚說 當事人就是後悔,非常後悔!依稀記得...
菜鳥筆記之演算法
在程式設計中,我們如果要解決問題,就要涉及到演算法設計,演算法設計是最具創造性的工作之一,本人認為演算法設計是計算機工作之中最具活力的工作。人們解決問題的思想方法步驟都有可以稱之為演算法演算法是指令的集合,是為了解決問題而進行的一系列的操作,他明確了可計算的過程,以乙個資料結合作為輸入,以乙個資料集...
mysql 安裝 菜鳥 菜鳥也玩mysql之安裝篇
作為乙個運維工程師,或多或少都要接觸到mysql。今天我來了解一下到底什麼是mysql,它該如何安裝到我們的系統中。什麼是mysql?mysql是乙個小型關係型資料庫管理系統,它是世界上非常流行的開源資料庫。由於其體積小 速度快 總體擁有成本低,尤其是開放原始碼這一特點,許多中小型 為了降低 總體擁...