Oba's Google Style
来源:互联网 发布:软件下载大全360 编辑:程序博客网 时间:2024/06/15 14:47
为什么起这个名字呢,是突发了coding style的兴趣,于是搜了搜,整理一套自己的style。
下面先用于C++,如果要是以后新的语言C#等再说。
1. curly bracks放在同一行,这样减少行数,看起来简单。
2. function name用camel convention。
3. variable: 全局g_xxx,member in class xxx_,local用小写加underscore。
4. *和& 紧跟在symbole的前面,因为char* p1, p2//p1是指针而p2却还是char type,防止这个事情发生。
5. indentation用两个,简单方便。
6. 用空格的地方:
foo (int i); //between function name and the parenthesis
foo (int value) : data (value), next (NULL) {}
for ( int i = 0; i < s.length(); i++ ) {}
int main (int argc, char *argv []) {} //no space in empty brackets
int foo () { return 1; } //space near brackets, same Enum
return DoSomething(argument1, argument2, argument3); // No Space at function calls
7. 为了防止多余的include,forward declaration可以用。因为目前程序量不大,prefer在前面定义并实现class。
forward declaration为了防止没有被定义,从刚开始学的时候就是这样。
8. Comments放在相应的上边,短用//,长用/* */
9. Conditions: 如果只有一行,不用brackets。
if (condition) //no space near parenthesises
DoSomething(); // 2 space indent.
if (condition) {
DoSomething(); // 2 space indent.
}
10. Loop要注意每个case都配上break,一定要有default,如果empty loop body,要加{ }。
switch (var) {
case 0: { // 2 space indent
... // 4 space indent
break;
}
case 1: {
...
break;
}
default: {
assert(false);
}
}
头文件里只定义,实现在分别的.cpp文件是因为防止被多个include之后太冗长。
Reference: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Naming
PS一段改过的代码:
#include <iostream>using namespace std;template <class T>class LinkedNode { public: LinkedNode(T value) : data_(value), next_(NULL) {} ~LinkedNode() {} T getValue() const { return data_; } LinkedNode *getNext() const { return next_; } void setValue (T value) { data_ = value; } void setNext (LinkedNode* value) { next_ = value; } private: LinkedNode *next_; T data_;};template<class T>//using LinkedNode as nodeclass LinkedList { public: LinkedList() { head_ = NULL; rear_ = NULL; } ~LinkedList() { LinkedNode<T> *delete_me = head_;while (delete_me) { LinkedNode<T> * next = delete_me->getNext(); delete delete_me; delete_me = next;}head_ = NULL;rear_ = NULL; } LinkedNode<T> *search (T target) const {LinkedNode<T> *link_node_ptr = head_;while (link_node_ptr != NULL){ if (link_node_ptr->getValue() == target) return link_node_ptr; elselink_node_ptr = link_node_ptr->getNext();}return NULL; } bool addFront (T value) {LinkedNode<T> *newnode = new LinkedNode<T> (value);//if the list is emptyif (head_ == rear_) rear_ = newnode;newnode->setNext(head_);head_ = newnode;return true; } bool addRear (T value) {LinkedNode<T> *newnode = new LinkedNode<T> (value);//if the list is emptyif (head_ == rear_) head_ = newnode;else rear_->setNext(newnode);rear_ = newnode;return true; } bool deleteNode (T target) {LinkedNode<T> *link_node_ptr = head_;LinkedNode<T> *delete_this_ptr = search(target);if (!delete_this_ptr) return false;//special case if it's the headif (delete_this_ptr == head_) { head = delete_this_ptr->getNext(); delete delete_this_ptr; return true; }while (link_node_ptr->getNext() != delete_this_ptr){ link_node_ptr = link_node_ptr->getNext();}link_node_ptr->setNext( delete_this_ptr->getNext() );delete delete_this_ptr;return true; } private: LinkedNode<T> *head_; LinkedNode<T> *rear_;};
- Oba's Google Style
- Google's C++ coding style
- Google's R Style Guide
- Google's C++ coding style
- #R#Google's R Style Guide
- R语言-代码规范(Google's R Style Guide)
- Google C++ Style
- Google C++ Style Guide
- Google C++ Style
- Google C++ Style Guide
- Google C++ style guide
- Google c++ style guide
- Google C++ Style Guide
- Google C++ Style Guide
- Google C++ Style Guide
- Google C++ Style Guide
- google c++ code style
- Google C++ Style Guide
- FreamStream文件的分割
- lsof命令
- 七大主流排序算法时间效率比较(基于C语言)
- unity3d刚体和碰撞检测学习一:新建一个plane和一个sphere,却碰撞检测失败的问题
- StreamWriter(流形式写入文本文件)
- Oba's Google Style
- linux C C++ 字符集转换,UTF-8,GB2312
- 判断字符串的编码类型(GBK / UTF8)
- Windows Server 2012&R2超级虚拟化之十一 软件定义网络之网络虚拟化
- 32 F 1 0X_XX宏定义的选择32 flash大小的选择
- Gas Station -- LeetCode
- codeforces#239_div2_C Triangle
- 面试官角度看招聘注意事项
- 在ListView存在下如何在布局底部放一个子布局