白话C++编程系列之十一 规范篇

in #programming7 years ago

c++!
上回说到《白话C++编程系列之十: 入口函数篇》
, 我们知道了程序的入口函数通常为main, 就像逛超市, 我们必须得知道它的入口, 才能进去shopping一样, 有了这个main我们写的程序就知道从哪里开始运行了.

怎么样?您对入口函数的概念还深么?main函数可是我们每个程序都会有的呀.
您有没有动手去实践一下? 先让我们来一起复习一个这个概念吧. 也欢迎您的留言和提问。

入口函数main

入口函数 是C++程序运行时首先会被调用的函数, 名字通常为main。就像超市的入口。找到这个入口, 我们就可以愉快地shopping了。

Today, 我们来和您学习另外一个话题 编程规范
1.编程规范是啥?


编程规范就是编程中应该遵行的规则。它类似交规。按照交规进行, 交通就更高效、方便、快捷, 生活也更幸福。相反的结果您也一定能想象得到。

我们这里先狭义的讲几个规范:
命名规范 如何命名变量, 类名, 常量, 函数名等等.
文件存放目录 文件, 文件夹等等.
提交规范 提交代码, 注释, 编译通过等等.
编码规范 注释量, 函数注释, 特殊功能注释等等.

广义的规范, 可以泛指一切编程中要遵行的规则. 其实我们目前所有学习的东西都是编程的规则.
规则就像是法律或者科学规律,只有更懂它,才能更好的用它,遵守它,否则一定会受到惩罚或者遭遇困难.

来看例子。

// D:\dev\jinLab\p11_rules\p11_rules\p11_rules.cpp
//编程规范

/*
@Author: Albert 小宁
@Web: http://jinLab.com
@WeChatOfficalAccount: 小宁静致远
@Date: 2017-12-10
@KS: https://t.xiaomiquan.com/IeieiEm
*/

#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <array>
#include <iostream>
#include <string>
#include "stdafx.h"

//常量以大写形式来写
const double CONST_dPI = 3.1415926;

// 1.3函数命名: 
// 首字母大写
//单词的首字母大写
// Get
// Max
//GetMax

//注释: 获取两个整形的最大者
int GetMax( int iLeft, int iRight )
{
    if ( iLeft > iRight )
        return iLeft;

    return iRight;
}

//找出一堆数中 比iMe 只大一的一个数字
// 找不到返回 iMe
// 此函数的返回值为 int(整形)
int GetOneBigThanMe( std::array<int, 10 > const aryNumbers, int iMe )
{
    for ( int i = 0; i < 10; ++i )
    {
        //这里从数组的开始的位置找,
        //只要找到第一个,我们就返回
        //不接着找第二个
        if ( 1 + iMe == aryNumbers[ i ] )
            // return 就是返回的意思.
            //这里返回 aryNumbers 中的第 i个数字.
            // C++中, 数组的索引(下标)从0开始 
            return aryNumbers[ i ];
    }

    //没找到,返回 iMe.
    return iMe;
}

int main( int argc, char * argv[ ] )
{
    /*
    1. **命名规范** 如何命名变量, 类名, 常量, 函数名等等.
    */

    /*
    1.1 变量命名: 以类型开头 i 表示整形
    f 表示 浮点数
    */
    // 整形变量 i007
    //值为 7
    int i007 = 7;

    //浮点数: 圆周率 π
    double dPi = CONST_dPI;

    /*
    1.2 常量
    */

    int iFive = 5;
    int iMax = GetMax( i007, iFive );
    std::cout << "Bigger one is:" << iMax << std::endl;

    /*
    2. **提交规范** 提交代码, 注释, 编译通过等等.
    */

    //2.1 提交代码?
    //将代码提交到代码repository中进行管理和跟踪

    //2.2 注释: 加上注释让自己, 
    //更让别人和将来的自己明白 自己现在为什么这样写这个代码.


    //2.3 编译通过: 提交到 代码repository中的代码必须至少要编译通过,
    //不能提交不能编译通过的代码,因为代码仓库不是垃圾箱

    /*
    3. **编码规范** 注释量, 函数注释, 特殊功能注释等等.
    */

    /*
    3.1 注释量:
    注释不用写的太多,否则会比较麻烦,影响阅读.
    最好用一句话能说明的不能2句话来说
    当然,对一些关键的参数或代码部分 可以多说几句
    */

    //3.2 函数注释:
    // 参见前面的 GetMax函数:
    // 它的注释就是: 获取两个整形的最大者
    // 加个注释之后, 以后就可以不看函数的具体内容
    // 就可以知道 函数的功能了.否则就要花时间去看这个函数的功能.


    /*
    3.3 特殊功能注释
    */

    // 生成一个比100小的一个随机数
    //以当前时间为seed 来生成一个随机数
    std::srand( std::time( 0 ) );
    int iMe = std::rand( ) % 100;

    //定义有10个元素的整形数组
    std::array< int, 10 > aryNumbers = { 1, 66, 5, 77, 163, 8, 123, 33, 13, 3 };
    int result = GetOneBigThanMe( aryNumbers, iMe );
    std::cout << "Me: " << iMe << std::endl;
    if ( result != iMe )
        std::cout << "The one ONLY one bigger than "
        << iMe << " is " << result << std::endl;

    return 0;
}

代码截图1
代码截图2
代码截图3




2.规范的应用?(举个例子)


上面的代码和图片中已经说明了规范的例子.这里我给大家来几张 svn 提交代码的图吧.
来自其它项目的提交代码到svn的图
代码修改比较图
svn diff
代码提交注释图
svn comments
代码提交完成图
svn checkin finished




3.代码规范实践?(动手操作)


我想您看了上图的例子,也一定想自己动手来践行一下吧.太好了.
我们就是要在编程中遵守这些规则, 这样我们的程序会更易读, 更规范, 更易维护和扩展.
撸起袖子加油干吧!
这里我把程序的可能的输出结果图也发给您.
(程序每次运行的结果都不太一样呀.你的结果可能和我的结果不一样.)
程序运行结果
程序运行结果1

怎么样?哈哈
恭喜您, 今天您和我一起学习了编程的规范的概念.
编程规范

就是编程中应该遵行的规则。它类似交规。
按照交规进行, 交通就更高效、方便、快捷, 生活也更幸福。相反的结果您也一定能想象得到。

编程规范的应用
编程规范的实践

这些规范还是很好理解的吧? 快动手践行一下吧,您将收获成长. 如何您有什么想法,请随时在文章留言区留言^_^




白话C++编程系列之:下期预告


白话C++编程系列之十二: 运算符篇
* 1. 运算符是啥?
* 2. 运算符怎么用?
* 3. 运算符实践?



延伸 相关阅读


svn

Subversion: https://subversion.apache.org: It is an open source version control system. 一个开源代码管理系统.
有了它,我们对代码可以进行集中管理: 提交,查找,删除,对比,合并,回滚,查看历史,建立tag, 分支等操作.

这里给大家分享一张我的代码提交图.
svn history
svn menu

让自己配得上想要得到的东西 -- Charlie Munger https://en.wikipedia.org/wiki/Charlie_Munger
反之亦然: 东西会给配得上它的人 -- Ablert Jin http://jinLab.com





《白话C++编程系列》


《白话C++编程系列之: C++入门与实践大纲》

《白话C++编程系列之一: 本质篇》

《白话C++编程系列之二: 变量篇》

《白话C++编程系列之三: 类型篇》

《白话C++编程系列之四: 语句篇》

《白话C++编程系列之五: C++是啥?》

《白话C++编程系列之六: 表达式(语句之爱恨)》

《白话C++编程系列之七: 函数篇》

《白话C++编程系列之八: 文件篇》

《白话C++编程系列之九: 多个文件篇》

《白话C++编程系列之加餐一: IDE工具篇》

《白话C++编程系列之十: 入口函数篇》








Wanna learn English in USA? Click this link:
Talk English in USA: https://t.xiaomiquan.com/EuBqfMb

区块链投资/板砖/挖矿: https://t.xiaomiquan.com/iQV37MB

对医学感兴趣? 三体·生命依托

创业?动画片?国产? 大鱼海棠: 我的创业梦

Robinson Crusoe|鲁滨逊漂流记-Chapter 2 您知道的都2了, for 1? click to find and see, listen.

孩子们不能错过的经典动画片“小猪佩奇”

请大家多多动手,让编程也成为您的一种爱好和生产力。
请关注微信公众号 小宁静致远 或扫码关注我, 欢迎、感激传播! ^_^
期待和您多交流、共成长。谢谢!
扫描关注小宁静致远
精灵实验室? http://jinLab.com
留言区就是您的天下,欢迎吐槽、拍砖!

Why NOT let programming a skill of you?
Please follow my WeChat Official Account 小宁静致远 or scan the 2D code above to follow me & thanks for sharing me to your friends! ^_^
Hope we can communicate each other & improve ourselves together. Thanks!
JinLab? http://jinLab.com
Any ideas? Please add comments to the article!

学习C++? Lear C++? 请加入我的知识星球: Join my Knowledge Space:
白话C++编程:C++入门与实践 https://t.xiaomiquan.com/IeieiEm
oral C++ programming and practice! https://t.xiaomiquan.com/IeieiEm
加入白话C++ programming
不让好机会溜走,飞向白话C++编程知识星球!不让好机会溜走白话C++编程知识星球

鼓励我的创作? Encourage me?
您的鼓励我的动力! Appreciate your praise!