欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

小菜編程成長記(一 面試受挫——代碼無錯就是好?)第2/3頁

 更新時間:2006年10月17日 00:00:00   作者:  

三 復(fù)制VS復(fù)用

小菜:“我明白了,他說用任意一種面向?qū)ο笳Z言實(shí)現(xiàn),那意思就是要用面向?qū)ο蟮木幊谭椒ㄈ?shí)現(xiàn),對嗎?OK,這個我學(xué)過,只不過當(dāng)時我沒想到而已?!?br>
大鳥:“所有編程初學(xué)者都會有這樣的問題,就是碰到問題就直覺的用計算機(jī)能夠理解的邏輯來描述和表達(dá)待解決的問題及具體的求解過程。這其實(shí)是用計算機(jī)的方式去思考,比如計算器這個程序,先要求輸入兩個數(shù)和運(yùn)算符號,然后根據(jù)運(yùn)算符號判斷選擇如何運(yùn)算,得到結(jié)果,這本身沒有錯,但這樣的思維卻使得我們的程序只為滿足實(shí)現(xiàn)當(dāng)前的需求,程序不容易維護(hù),不容易擴(kuò)展,更不容易復(fù)用。從而達(dá)不到高質(zhì)量代碼的要求?!?

小菜:“鳥哥呀,我有點(diǎn)糊涂了,如何才能容易維護(hù),容易擴(kuò)展,又容易復(fù)用呢,能不能具體點(diǎn)?”

大鳥:“比如說,我現(xiàn)在要求你再寫一個windows的計算器,你現(xiàn)在的代碼能不能復(fù)用呢?”

小菜:“那還不簡單,把代碼復(fù)制過去不就行了嗎?改動又不大,不算麻煩。”

大鳥:“小菜看來還是小菜呀,有人說初級程序員的工作就是Ctrl+C和Ctrl+V,這其實(shí)是非常不好的編碼習(xí)慣,因?yàn)楫?dāng)你的代碼中重復(fù)的代碼多到一定程度,維護(hù)的時候,可能就是一場災(zāi)難。越大的系統(tǒng),這種方式帶來的問題越嚴(yán)重,編程有一原則,就是用盡可能的辦法去避免重復(fù)。想想看,你寫的這段代碼,有哪些是和控制臺無關(guān)的,而只是和計算器有關(guān)的?”

四 業(yè)務(wù)的封裝

小菜:“你的意思是分一個類出來? 哦,對的,讓計算和顯示分開?!?br>
大鳥:“準(zhǔn)確的說,就是讓業(yè)務(wù)邏輯與界面邏輯分開,讓它們之間的耦合度下降。只有分離開,才容易達(dá)到容易維護(hù)或擴(kuò)展?!?br>
小菜:“讓我來試試看?!?BR>
復(fù)制代碼 代碼如下:

class Program
{
static void Main(string[] args)
{
try
{
Console.Write("請輸入數(shù)字A:");
string strNumberA = Console.ReadLine();
Console.Write("請選擇運(yùn)算符號(+、-、*、/):");
string strOperate = Console.ReadLine();
Console.Write("請輸入數(shù)字B:");
string strNumberB = Console.ReadLine();
string strResult = "";

strResult = Convert.ToString(Operation.GetResult(Convert.ToDouble(strNumberA),Convert.ToDouble(strNumberB),strOperate));

Console.WriteLine("結(jié)果是:" + strResult);

Console.ReadLine();

}
catch (Exception ex)
{
Console.WriteLine("您的輸入有錯:" + ex.Message);
}
}
}

public class Operation
{
public static double GetResult(double numberA,double numberB,string operate)
{
double result = 0d;
switch (operate)
{
case "+":
result = numberA + numberB;
break;
case "-":
result = numberA - numberB;
break;
case "*":
result = numberA * numberB;
break;
case "/":
result = numberA / numberB;
break;
}
return result;
}
}


小菜:“鳥哥,我寫好了,你看看!”

大鳥:“哈,孺鳥可教也,:),寫得不錯,這樣就完全把業(yè)務(wù)和界面分離了?!?

小菜心中暗罵:“你才是鳥呢?!?nbsp;口中說道:“如果你現(xiàn)在要我寫一個Windows應(yīng)用程序的計算器,我就可以復(fù)用這個運(yùn)算類(Operation)了。”

大鳥:“不單是Windows程序,Web版程序需要運(yùn)算可以用它,PDA,手機(jī)等需要移動系統(tǒng)的軟件需要運(yùn)算也可以用它呀?!?

小菜:“哈,面向?qū)ο蟛贿^如此。下會寫類似代碼不怕了?!?

大鳥:“別急,僅此而已,實(shí)在談不上完全面向?qū)ο?,你只用了面向?qū)ο笕筇匦缘囊粋€,還兩個沒用呢?”

小菜:“面向?qū)ο笕筇匦圆痪褪欠庋b、繼承和多態(tài)嗎,這里我用到的應(yīng)該是封裝。這還不夠嗎?…………我實(shí)在看不出,這么小的程序如何用到繼承。至于多態(tài),其它我一直也不太了解它到底有什么好處,如何使用它?!?

大鳥:“慢慢來,有的東西好學(xué)了,你好好想想吧,我要去“魔獸”了,改時聊。”

相關(guān)文章

最新評論