# C语言不纠结 file.h & file.c # C++ Group.1(注意C是大写) file.h & file.C # C++ Group.2 file.hh & file.cc # C++ Group.3 file.hpp & file.cpp # C++ Group.4 file.hxx & file.cxxtip.1:c语言没有选择,以下仅讨论c++;
# Teddy项目UserLog文件为例: # Group.1 UserLog.c & TedUserLog.c # Group.2 userlog.c & teduserlog.c # Group.3 userlog.c & ted_userlog.c # Group.4 user_log.c & ted_user_log.c # Group.5 user-log.c & ted-user-log.ctip.1:如果需要将源码直接发布,可以使用项目名做前缀,防止链接时文件名冲突(msvc好像能自动重命名冲突的.obj文件,但是跨平台程序不能依赖这个特性);
/* ** 基本数据类型的重定义,小写比首字母大写更有利于延长Shift寿命, ** 但也更容易产生命名冲突。 */ typedef unsigned char byte; typedef unsigned char byte_t; typedef unsigned char Byte; typedef unsigned char Byte_t; /* ** 类与结构体常见的风格是采用PascalCase,不推荐使用camelCase ** 这种怪异的风格。 */ class HashTable { ... class hash_table { ... struct FileInfo { ... struct file_info { ... /* C语言常见到的风格还有结构体名称加'_t'后缀 */ struct fileinfo_t { ... struct FileInfo_t { ... /* 枚举命名常见PascalCase风格 */ enum FileFlags { ... enum file_flags { ...
tip.1:c语言没有命名空间,为防止命名冲突,常见做法是将项目名或其缩写作为类型名称前缀;
tip.2:类,结构体,枚举的命名风格尽量保持一致;
/* 一般使用项目名称,风格看喜好。 */ namespace my_project { ... namespace MyProject { ...
tip.1:确保命名空间不会和常用的库冲突;
/* ** 在函数和变量命名风格上PascalCase,camelCase, ** snake_case三足鼎立,选择凭喜好。 */ void FunctionName(void) { ... void functionName(void) { ... void function_name(void) { ... long VarName; long varName; long var_name; /* ** tip.1:snake_case在名称比较长时可读性较好; */ long variable_names_in_snake_case; long VariableNamesInPascalCase; long variableNamesInCamelCase; /* ** tip.2:PascalCase和camelCase在函数中的区分度较好, ** 在快速扫描代码逻辑的时候不易被其它符号所干扰。 */ long FabonacciFunction(long rabbitNums) { if (rabbitNums < 2) { return rabbitNums; } long resultOne = FabonacciFunction(rabbitNums - 1); long resultTwo = FabonacciFunction(rabbitNums - 2); return resultOne + resultTwo; } long fabonacci_function(long rabbit_nums) { if (rabbit_nums < 2) { return rabbit_nums; } long result_one = fabonacci_function(rabbit_nums - 1); long result_two = fabonacci_function(rabbit_nums - 2); return result_one + result_two; }
tip.3:如果类需要兼容标准库迭代器或是要支持range for,begin()和end()函数会破坏PascalCase风格的一致性;
/* ** 类成员变量和全局变量的命名风格和局部变量的命名风格 ** 并没有更多的区别。唯一的问题是,是否要加前缀或后缀 ** 以方便和局部变量区分开来。 */ class UserInfo { ... private: std::string user_name_; /* Google style */ std::string m_userName; /* Hungarian notation */ /* 不推荐前缀'_'的风格,可能会和标准库命名冲突 */ }; /* 全局变量要少用,推荐加前缀用于区分 */ extern "C" long g_commonCount;
tip.1:在有IDE提示时,前缀"m_"的类成员变量能够很快被找到,如果不喜欢这种风格,"this->"同样也很便利;
/* ** 常量和枚举值的命名风格建议和局部变量的命名风格区分开, ** 常见的有全字母大写加'_'的风格,PascalCase风格,以及 ** Google加'k'前缀的风格。 */ static const int DAYS_IN_WEEK = 7; static const int kDaysInWeek = 7; enum FileOpenMode { ReadOnly, WriteOnly, ReadWrite }; enum FileOpenMode { READ_ONLY, WRITE_ONLY, READ_WRITE };
tip.1:如果可以使用c++11特性,推荐enum class,否则可以在有歧义的枚举值中重复枚举类型的名字;
/* 宏命名推荐使用全字母大写加'_'分隔的风格 */ #define OS_UNIX #define OS_LINUX #define OS_WINNT /* 除非你想用条件编译将某些功能变为可选项 */ #ifdef USE_TCMALLOC #define my_malloc tcmalloc #else #define my_malloc malloc #endif
tip.1:能用常量替代宏的地方尽量使用常量吧;
1.【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: name / \_name / $Object / name_ / name$ / Object$ 2.【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明: 正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式 也要避免采用。 正例: mond
1.【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。 注意,即使纯拼音命名方式也要避免采用。 反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3 正例: monda / fiidee / dayi 等国际通用的名称,可视同英文。 2
问题内容: 我需要在C#端生成ECDSA签名,并在使用(显然)相对公钥读取并验证android应用程序上的签名后。好吧,要在Java中获得ECDSA密钥对(使用充气城堡提供程序),代码是这样的 字符串,是曲线名称。我可以选择“ secp224k1”,“ secp224r1”,“ secp256k1”,“ secp256r1”和其他更多内容。 我的问题是: 上面提到的C#中的等效曲线名称是什么? 有
哪个是上面提到的C#中的等价曲线名? 有人能给我举一个例子,说明如何在C#中生成一个类似于上面java代码的keyPair吗? 提前致谢
本文向大家介绍PHP中通过getopt解析GNU C风格命令行选项,包括了PHP中通过getopt解析GNU C风格命令行选项的使用技巧和注意事项,需要的朋友参考一下 在 PHP 中,当我们在获取命令行参数时,可以通过遍历$argv来获取,其实呢是有规范可循的,也就是 GNU C-style parser for command line options 。 比如使用命令wget下载文件时,使用下
enum 也可以像 C 语言枚举那样使用。 // 隐藏未使用代码警告的属性。 #![allow(dead_code)] // 拥有隐式辨别值(implicit discriminator)的 enum(从0开始计数) enum Number { Zero, One, Two, } // 拥有显式辨别值(explicit discriminator)的 enum enum C
命名 通常来说,使用 functionNamesLikeThis , variableNamesLikeThis , ClassNamesLikeThis , EnumNamesLikeThis , methodNamesLikeThis , CONSTANT_VALUES_LIKE_THIS , foo.namespaceNamesLikeThis.bar 和 filenameslikethis
分号 小技巧 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 小技巧 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL,路径以及其他的一些长标记 不便于换行,不包含空格的模块级字符串常量,比如url或者路径 Pylint 禁用注释.(例如:``# pylint: disable=invalid-name) 除非是在 with 语句需要三个以上的上下文管理器的情况下,否