Linux Coding Style
https://docs.kernel.org/next/translations/zh_TW/process/coding-style.html
第3段
大括号 为何 function 与 判断式会不同
Linus 本人给出的理由是 function 中不会包著function
即没有巢状式的function 而判断式中会包著判断式
另一点文中提到的 K&R coding style 也是function与判断式不同
新型的K&R style function 与 判断式的左括号统一了
https://gist.github.com/jesseschalken/0f47a2b5a738ced9c845
再来就是自C++11 之后 Function 内可以包著Function
EX: lambdas 表示式
https://stackoverflow.com/questions/4324763/can-we-have-functions-inside-functions-in-c
!!!上述原因 目前的 C++ [判断式的左括号] 已无规范必要!!!
判断式的左括号 在行尾或下一行皆可
///////////////////linux coding style///////////////
1) 缩进
制表符是 8 个字符,所以缩进也是 8 个字符。有些异端运动试图将缩进变为 4
(甚至 2!) 字符深,这几乎相当于尝试将圆周率的值定义为 3。
理由:缩进的全部意义就在于清楚的定义一个控制块起止于何处。尤其是当你盯着你的
屏幕连续看了 20 小时之后,你将会发现大一点的缩进会使你更容易分辨缩进。
2)
...略
3) 大括号和空格的放置
C 语言风格中另外一个常见问题是大括号的放置。和缩进大小不同,选择或弃用某种放
置策略并没有多少技术上的原因,不过首选的方式,就像 Kernighan 和 Ritchie 展示
给我们的,是把起始大括号放在行尾,而把结束大括号放在行首,所以:
if (x is true) {
we do y
}
不过,有一个例外,那就是函数:函数的起始大括号放置于下一行的开头,所以:
int function(int x)
{
body of function
}
全世界的异议份子可能会抱怨这个不一致性是… 是的 … 不一致的,不过所有思维健全
的人 都知道
(a) K&R 是 正确的 并且 (b) K&R 是正确的。
此外,不管怎样函数都是特 殊的 (C 函数是不能嵌套的)。
当只有一个单独的语句的时候,不用加不必要的大括号。
if (condition)
action();
和
if (condition)
do_this();
else
do_that();
※ 引述《fatalfeel2 (风在动)》之铭言:
: 程式命名规则 与 Makefile
: 1. 查阅了 ISO 1999 C99, ISO 2011 C++, ISO 2014 C++, ISO 2020 C++,
: https://reurl.cc/gZGz6L
: https://reurl.cc/XLGlq0
: ISO都有基本的命名规则
: 另查阅 微软 安卓 程式规范
: 微软 的 命名规则偏向 The Hungarian Naming Convention
: 由2001 制定完整规范, prefix 如ch, sz, p
: https://idleloop.com/hungarian/
: 2. variable prefix naming convention 一定是正确的吗?
: (a)
: 北美电网程式规范与openPDC 首席设计师 James Ritchie Carroll
: https://www.gridprotectionalliance.org/docs/GPA_Coding_Guidelines_2011_03.pdf
: Page 12 原文贴上
: Do not use Hungarian notation
: Do not abbreviate
: Do not prefix enums, classes, or delegates with any letter
: (b)
: Linux核心的创始者 开源专案Git创始者 Linus Torvalds
: https://www.kernel.org/doc/html/v4.10/process/coding-style.html
: https://slurm.schedmd.com/coding_style.pdf
: 第四章 原文贴上
: Encoding the type of a function into the name (so-called Hungarian notation)
: is brain damaged - the compiler knows the types anyway and can check those,
: and it only confuses the programmer. No wonder MicroSoft makes buggy programs.
: (注意一下这两位大神coding在意的重点是什么)
: 3.
: GNU MAKE
: https://www.gnu.org/software/make/manual/make.html
: #dir named with www.gnu.org/software/make/manual/make.html 4.3 16.3 16.5
: SRCDIR = ./source
: OBJDIR = ./obj
: BINDIR = ./bin
: #compile optione with www.gnu.org/software/make/manual/make.html 4.3 16.3 16.5
: $(OBJDIR)/%.o : ./$(SRCDIR)/%.cpp
: $(CXX) -c $(CXXFLAGS) $< -o $@
: #Note: CPPFLAGS at www.gnu.org/software/make/manual/make.html 10.3
: CC
: Program for compiling C programs; default ‘cc’.
: CXX
: Program for compiling C++ programs; default ‘g++’.
: CPPFLAGS
: Extra flags to give to the C preprocessor and programs that use it (the
: C and Fortran compilers).
: CXXFLAGS
: Extra flags to give to the C++ compiler.
: ※ 引述《heaviest (heaviest)》之铭言:
: : 最近开始学C,刚刚把前几天写的程式,打开来看
: : 发现变量一时之间完全搞不清楚
: : 明明当初有尽力的取有意义的名称,然后照着大写来分开字这样打
: : 跑去问了学长,他叫我去背单字,他说变量名字取不出来是我单字被太少QQ
: : 请问各位前辈们都怎么取有意义的名字