Download presentation
Presentation is loading. Please wait.
1
上海交通大学 ACM班 原作者 2015级 卢思迪 部分调整 2016级 刘啸远 加了一点点 2017级 侯博涵
代码风格与调试 上海交通大学 ACM班 原作者 2015级 卢思迪 部分调整 2016级 刘啸远 加了一点点 2017级 侯博涵
2
概要 代码风格与编程环境配置 调试 黑科技(一部分机考可用)
3
环境? 编程语言根本不重要,重要的是思想? 用什么工具根本不重要,重要的是人?
4
编程环境配置 选择编辑器+命令行还是IDE? 如何在Windows上搭建起舒适的命令行环境? 好的字体?
Consolas, Courier 之类等宽字体 好的编辑器? Emacs,Vim,Notepad++,Atom Sublime text, VS Code 好的C++IDE? VS JetBrains出品的系列IDE(Clion for c++, IntelliJ IDEA forJAVA) Qt Creator etc.
5
与世界分享你的idea——代码风格 为什么要注意代码风格? 下面是一个不好的例子:
7
好的代码风格 Allman K & R Google Style 更详细来说: 空格 空行 花括号 命名 好的宏与模板元编程
8
/wiki/Indent_style
10
空格 运算符间,逗号之后 例子: a = (a + 2) * 2 * __gcd(221, 1896); ++a; 突出关键字
for (int i = 1; i < n; ++i) while (vInt.empty()) if (get_handle(virtual_pid, this -> allocator) -> status == Process.blocked) switch (token.type_value) etc
11
空行与注释 用途: 明确代码段之间在逻辑上的相对独立。 常见情景 类定义结束 函数定义结束 长的连续逻辑内部不同阶段间
12
花括号 Allman风格 K & R风格 跟PASCAL类似,相匹配的花括号间严格对齐,不同的层次间相差一个缩进单位(一般是一个Tab)
for (auto i = v.begin(); i != v.end(); ++i) { if (i -> graphics -> filter -> ready()) { i -> execute(); }
13
命名 Delphi/Borland Style (大小驼峰法) C / Unix Style (下划线间隔法)
类,结构体和函数名以一个短语命名,短语中每个单词首字母大写 GetThingsDone() 变量名以一个短语命名,第一个单词全部小写,其后每个单词首字母大写 bigBadWolf C / Unix Style (下划线间隔法) 短语中单词全部小写,以下划线间隔之 long_long_name_to_type 匈(fan)牙(ren)利(lei)命名法 int int_something
14
调试 使用GDB等命令行工具 使用IDE 输出日志 几种特殊方法 n r b p c help GUI程序:弹框中断(alert)
assert 折半法 多组数据:特殊数据中断法
15
内存泄漏的处理 使用智能指针等结构 使用valgrind或者VS等内存检查工具
16
一些奇奇怪怪的东西 #define CHAR_P char* typedef char* Char_p CHAR_P a,b;
Char_p c,d; what’s the type of … cout<<a++<<++a<<++a++<<++++a … OOP… Try to avoid…(If you don’t understand)
17
黑科技集锦 内联汇编(没见人用过,你们加油) new placement operator和简易的内存池构建
ios :: sync_with_stdio(false); //不要使用endl cin.tie(0); cout.tie(0); scanf >= 快速读入 > cin(关闭同步) >> cin(开启同步) __gcd(x, y)
18
最好的调试器 你优秀的同学,与你相伴四年的兄弟姐妹们 最优秀的你自己
19
一点大实话(from LSD) 大家可能会辛苦一点,选择交大就是选择了责任,选择了ACM班就是选择了成吨的责任=。=
珍惜每一个人的思想,不管你是不是觉得你们面临的问题其实很trivial =。= 善用搜索引擎可以帮助你看到更大的世界=。= 不仅仅要掌握专业知识,也要掌握照顾电脑的一点点技术,计算机算是你一个重要的伙伴,善待它=。= 好的饮食和锻炼助你健康成长=。= 尽早找到自己感兴趣的领域,但是不要在学习的时候限制自己,觉得什么什么没有用就懈怠,这样是不 行的,怎么apply for professor? 曰..曰
20
二点大实话 事情并不像你想象的那么困难,当然也不会像你想象想那么简单。 基本上你今天的爆肝都来自于你昨天的拖延。
当你发现你无所事事的时候,事情就不对了。
Similar presentations