zoukankan      html  css  js  c++  java
  • 模块化编程:函数定义

    在软件开发的过程中,我们经常会重复的使用一些代码片段,因此我们往往将这样的代码片段作为函数进行调用。

    函数有4种模式的定义和使用

    q        有参数,有返回值:yfx

    q        有参数,无返回值:fx

    q        无参数,有返回值:yf()

    q        无参数,无返回值:f()

    在游戏、图形、建筑领域的软件应用中,我们经常需要计算几何图形的面积。对于这些经常需要使用的计算,我们往往将计算的代码封装为函数进行使用。

     

    Code

    我们来分析第一个double RectangleArea(int x, int y)函数的定义:

    q        Double是定义了返回值

    q        RectangleArea是函数的名字

    q        int x, int y称为函数的参数

    以上函数的调用方式可以如下

    Code

    初学者注意:

    现代的商业软件开发,要求代码具有优秀的可读性和维护性,因此我们需要将重复使用的算法用模块的方式提炼为函数,通过对函数的调用优化代码。

    在编写函数的时候要牢记一个原则,即:单一职责原则。一个函数所执行的功能应该非常的单一,不应该有不同的行为。比如以下代码就是违反环了单一职责原则。

    Code

    仔细比较两段代码,你会发现后续的代码仅仅是把WriteLine迁移到了计算面积的方法体内,在这样的情况下,你似乎觉得在调用的时候只有更方便了

    static void Main(string[] args)
    {
        RectangleArea(
    1012);
        SquareArea(
    11);
        TrapeziumArea(
    789);
    }

    其实不然,新处理的三个方法违反了职责单一原则,在方法中又作了计算又参与了呈现。这样的模型不合理之处是当用户需要不同的呈现样式的时候,你必须修改这三个方法,而无法将算法重用。

  • 相关阅读:
    LG2664 树上游戏
    「NOI2007」 货币兑换
    「NOI2012」骑行川藏
    LG4721 【模板】分治 FFT
    LG4783 【模板】矩阵求逆
    test20181019 B君的第二题
    LOJ129 Lyndon 分解
    「NOI2017」泳池
    LG4723 【模板】常系数线性递推
    「AHOI / HNOI2017」礼物
  • 原文地址:https://www.cnblogs.com/shyleoking/p/1507611.html
Copyright © 2011-2022 走看看