一切的一切,起源于同济软件工程期末的大项目----拿cocos2d做一个游戏~~~
大项目是组队制的,所以有了下面这篇 “大项目代码风格”,
/*
以下为本次大项目代码风格规定
1. 类的命名用 大驼峰命名(每个单词首字母大写)
普通变量小驼峰命名(第一个单词首字母小写,其余首字母均大写)
类成员变量需要在名称前加 m_
如 class SomeClass
{
private:
m_tableName; 类中变量命名
}
int tableName; 普通变量命名
函数的命名用 小驼峰 如 void someThing(){}
并且特定类型加特定前缀
布尔变量命名前加 b
指针命名前加 p
上面一律使用英文单词(拒绝拼音),不缩写,不省略单词
2 不使用tab,只使用空格,空格2下缩进
3 花括号换行,同时花括号执行的代码无论多简单,都要加花括号
如if(some condition)
{
//your code
}
当然特别简单语句可以不换行
例如 if(i>1) { ++count; }
(其余情况不换行均视为邪教)
4 类定义必须要有构造函数,所有成员数据在此初始化
5 尽量使用++i,而不使用i++(先弄清区别)
6 头文件和源文件区别以及作用(这个很重要,不要所有东西都写在一个文件中)
给个网址 http://blog.csdn.net/yue34257667/article/details/45500811
7 记得加头文件保护符(当然vs在创建头文件时已经自动加了)
8 容器选择多使用 vector,string,少使用数组,要用数组也请用array
9 尽量使用迭代器而不是下标运算符[],迭代器的判断用!= 而不是 <=
例如
for(auto i=v.begin(); i!=v.end(); ++i)
{
//your code
}
也可以使用范围for语句遍历容器
遍历容器时不可修改容器数量
10 多使用const(这个要求比较高)
三种情况
(1)常量的定义
(2)强制保护函数参数值不发生改变
以下程序中,函数f 不会改变输入参数name 的值,但是函数g 和h 都有可能改变name的值。
void f(String s); // 值传递
void g(String &s); // 引用
void h(String *s); // 指针
int main()
{
String name=“Dog”;
f(name); // name 的值不会改变
g(name); // name 的值可能改变
h(name); // name 的值可能改变
return 0;
}
对于一个函数而言,如果其‘&’或‘*’类型的参数只作输入用,不作输出用,
那么应当在该参数前加上const,以确保函数的代码不会改变该参数的值(如果改变了该参数的值,编译器会出现错误警告)。
因此上述程序中的函数g 和h 应该定义成:
void g(const String &s);
void h(const String *s);
(3)修饰类中的成员函数:void fun4()const; 其意义上是不能修改所在类的的任何变量。
11 数据类型不要混用(可能产生意想不到的后果)
如 int 和 unsigned
int n=-1;
if(string.size < n) { cout>>"you are wrong";}
//string.size()的返回类型是 unsigned
必然会输出 you are wrong
因为int 和 unsigned 一起使用会发生隐式转换,int转为unsigned,-1 便转为 2^32-1
12 多了解面向对象思想(网上有许多blog,都说的很好)
给几个推荐 http://blog.csdn.net/baggiowangyu/article/details/2724334
http://blog.csdn.net/wsyhok/article/details/54600637
来个知乎的 https://www.zhihu.com/question/19854505
ps:大家一起学习,一起加油!!!*/
第一篇博客(不知道算不算博客)~~~