为什么起这个名字呢,是突发了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: .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 node
class 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;elserear_->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_;
};
本文发布于:2024-02-08 20:20:50,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170739517968864.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |