大数跨境
0
0

月薪过万秘籍 —— 代码的进化2(连载)

月薪过万秘籍 —— 代码的进化2(连载) 元讯趣编程
2021-08-28
2
导读:上一期我们讲到,所有的代码首先要以不出错为最主要的前提。就像人类社会的发展,首要问题就是吃饱肚子,再谈如何去



上一期我们讲到,所有的代码首先要以不出错为最主要的前提。就像人类社会的发展,首要问题就是吃饱肚子,再谈如何去提高生活质量,进而享受生活,那么在软件开发的世界里我们也遵循着同样的法则,那么当我们已经解决能够维持最低限度的生存之后,我们今天就来提高我们的生活质量啦!




所有初学编程的小伙伴们在思考问题时都会不自觉的去主动迎合计算机去编程,何谓主动迎合,也就是说去用计算机的的思维去思考编程,那么这样做错吗?显然不错,可是我们作为人类的存在,为什么要用机器的思维去编程呢?原因很简单,我们在学编程的时候首先学的就是面向过程编程嘛~可是时代不同咯,如果小伙伴们还是只有面向过程编程的思维,那么月薪可能就不太乐观啦!所以我们要学会面向对象~


一、理解面向对象



对于计算机学院的小伙伴而言,电脑是再熟悉不过的朋友了。拿内存条举例,当小伙伴们的爱机内存条坏了,我想应该没有人会吧整台电脑丢掉吧,哪里不懂点哪里,哪是坏了自然换哪里。

把电脑里的部件做到可拆卸可替换,这其实就是最朴实的面向对象的思想之一。把电脑中的每个部件都看作是一个对象。当我要升级电脑时,只要把需要升级的部件换掉即可。


面向对象优势如下:

1、程序模块可替换;  

从以上案例可以看出,如果客户需要经常对程序的功能进行修改替换,那么我们只需要把用户需要修改的模块做修改替换即可。


2、程序可扩展;  

通过面向对象的编程方式,我们的程序如果想扩展某些功能就变得相当简单,只需要把新的模块插入到原有的程序中就可以,类似于我电脑要加一块固态硬盘,那么只需要找到卡槽,插进去就行了。当然要做到方便扩展,程序在开发时就要考虑通过各种技术手段让程序做到易扩展,这一点在后续的课程中会给小伙伴们详细讲述。


3、程序代码方便复用; 

Ctrl+c,Ctrl+v 可谓是我们程序员的绝招之一。我们不生产代码,我们只是代码的搬运工。当我们需要之前写好的某些功能时,复制粘贴就可以了。这样做确实不错,自己重新写效率太低,也不稳定。如果我们把这段代码封装成对象。当我们需要使用时,只需要重复调用它即可。


4、程序易于维护;  

撇开复用不谈。如果每次都复制粘贴,代码看上去就很冗长,也不利于维护。比如我们复制粘贴的代码,某处需要修改,那们我之前所有复制该代码的地方都要修改,好麻烦。若是通过面向对象进行调用,那么我我们只需要修改对象模块中的代码,所有调用它的地方也就都改过来啦~



二、业务逻辑封装



在程序开发时,最基本的原则就是要让业务逻辑和上端界面分开。这样做即可以降低代码耦合。同时对于后期的维护也会带来便利。

Operation类:

public class Operation{
public static double GetResult(double numberLeft, doublenumberRight, string operate)
{
double result = 0d;
switch (operate)
{
case "+":
result = numberLeft + numberRight;
break;
case "-":
result = numberLeft - numberRight;
break;
case "*":
result = numberLeft * numberRight;
break;
case "/":
if (numberRight != 0)
{
result = numberLeft / numberRight;
}
else
{
Console.WriteLine("除数不能为0");
}
break;
}
return result;
}
}

上端调用:

class Program{
private static void Main(string[] args)
{
try
{
Console.WriteLine("请输入左边数字数字:");
string numberLeft = Console.ReadLine();
Console.WriteLine("请选择运算符号(+、-、*、/):");
string operate = Console.ReadLine();
Console.WriteLine("请输入右边数字:");
string numberRight = Console.ReadLine();
string result = "";
result = Convert.ToString(Operation.GetResul(Convert.ToDouble(numberLeft), Convert.ToDoubl(numberRight), operate));
Console.WriteLine("结构是:" + result);
}
catch (Exception ex)
{
Console.WriteLine("输入有误:" + ex.Message);
}
}
}


写到这里,有些小伙伴就能体会到封装带来的好处了。以后如果再有地方要用到数学运算,只要调用Operation类即可,不需要再复制粘贴了,真方便。那么到这里,业务类也封装了,方法也可以复用了,我们是不是就可以高枕无忧了呢?

NO!NO!NO!如果这样小伙伴就认为OK了。那么月薪过万甚至过2万的程序员又有什么稀奇呢,岂不是谁都可以做到?



三、面向对象封装



加、减、乘、除是小伙伴们上学最先学到的知识点之一,在程序开发时结合我们一切皆对象的思想,加、减、乘、除的意义也就不再是单纯的运算符号,而是对象。

以加法为例:

★属性

   NumberLeft 

   NumberRight

★职责 

   加法运算


以此类推,我们来设计加、减、乘、除四大类:

加法类:

public class OperationAdd {
public double NumberLeft { get; set; }
public double NumberRight { get; set; }
public double GetResult() {
return NumberLeft + NumberRight;
}
}


减法类:

public class OperationSub{
public double NumberLeft { get; set; }
public double NumberRight { get; set; }
public double GetResult()
{
return NumberLeft - NumberRight;
}}


乘法类:

public class OperationMul{
public double NumberLeft { get; set; }
public double NumberRight { get; set; }
public double GetResult()
{
return NumberLeft * NumberRight;
}}

除法类:

public class OperationDiv{
public double NumberLeft { get; set; }
public double NumberRight { get; set; }
public double GetResult()
{
if (NumberRight == 0)
{
throw new Exception("除数不能为0");
}
return NumberLeft / NumberRight;
}}

Operation类:

public class Operation{
public static double GetResult(double numberLeft, doublenumberRight, string operate)
{
double result = 0d;
switch (operate)
{
case "+":
OperationAdd operationAdd = new OperationAdd();
operationAdd.NumberLeft = numberLeft;
operationAdd.NumberRight = numberRight;
result = operationAdd.GetResult();
break;
case "-":
OperationSub operationSub = new OperationSub();
operationSub.NumberLeft = numberLeft;
operationSub.NumberRight = numberRight;
result = operationSub.GetResult();
break;
case "*":
OperationMul operationMul = new OperationMul();
operationMul.NumberLeft = numberLeft;
operationMul.NumberRight = numberRight;
result = operationMul.GetResult();
break;
case "/":
OperationDiv operationDiv = new OperationDiv();
operationDiv.NumberLeft = numberLeft;
operationDiv.NumberRight = numberRight;
result = operationDiv.GetResult();
break;
}
return result;
}
}


现在我们完成了对加、减、乘、除四大类的封装。让它们成为“对象”。当我们需要做加法时不再是手动去写X+Y了,而是调用加法对象即可~这样做的好处在于,如果我们在做运算时增加一些别的动作就非常方便,例如每个程序都要有一套日志系统,俗话说无日志不系统嘛,所以我们在做加法时,就可以顺便记录下“某年某月某日,某某用户做了加法,等内容”。做到雁过留痕,对于我们日后系统的维护无疑是非常有利的。



通过今天的学习,相信小伙伴们已经理解了面向对象的思想。可是敏锐的小伙伴们一定发现我们封装了加减乘除之后Operation类不但没有变的简单,反而更加复杂了,那么一定会有小伙伴质疑这样做的意义何在呢。哈哈~大家不用着急,今天的内容可谓是黎明前的黑暗,也是量变积累成质变的最后一刻。待到下回,我们的代码将会有脱胎换骨的变化,欲知变化后的代码是怎样的,月薪过万的程序员写的代码究竟和普通程序员的代码有何不同。且看下回分解~!



加入Ace的社区群

346250023 

一起学习吧!

关注我

发现更多精彩


【声明】内容源于网络
0
0
元讯趣编程
学习编程从入门到精通
内容 51
粉丝 0
元讯趣编程 学习编程从入门到精通
总阅读94
粉丝0
内容51