- 博客(9)
- 资源 (3)
- 收藏
- 关注
翻译 翻译《有关编程、重构及其他的终极问题?》——12.当使用拷贝黏贴,一定要特别注意最后一行
的确,当连续的代码块大部分类似时,我们会使用复制黏贴来加快编码速度,然后再手动修改每一块不一样的地方,但是——我的经验也是——我们会在最后一行犯错误。作者还严谨的做了统计,不止你、不止我,而是大部分程序员都会容易在最后一行犯错。
2016-12-23 21:20:25 583
翻译 翻译《有关编程、重构及其他的终极问题?》——11.不要试图把尽量多的操作符放到一行代码里
在很多编程语言中,一些聪明的新手们喜欢在尽量少的代码中写出尽量复杂的语句,逼格似乎很高,但这种做法得不偿失,除了难懂,还易引起“Undefined Behaviar”的错误,这其实和“Sequence Point”有关,相信很多人不知道它,但了解它后,你会发现原来除了基本的运算符优先外,编译器还依赖“Sequence Point”,然后你就会放弃装逼,写出易理解且稳定的代码。对了,这点对大多数语言都通用。
2016-12-19 21:21:47 454
翻译 翻译《有关编程、重构及其他的终极问题?》——10.避免使用多个小的#ifdef块
在写程序时,其实留意的话你会发现有些语句写起来很舒服(一不小心就写多了),但阅读起来却很困难,而且容易产生错误,C/C++中#ifdef块就属于这种,虽然写起来很牛(一般都和预编译、平台等接近底层的控制有关),但几乎没人喜欢读一大片#ifdef的代码,结果在后续的java/C#中,就看不到类似语句了。世界上残余不多的C/C++程序员们,请不要以为#ifdef的逼格高,其实代价挺大的,能不写就不写吧。
2016-12-19 21:13:20 517
翻译 翻译《有关编程、重构及其他的终极问题?》——9.使用'-0'符号作为结尾标记
这个覆盖大部分语言,避免使用在所有情况中使用0,这样就能让代码更容易理解,并且更容易发现错误。下面是一些技巧:- 0 - 只使用在需要整型值0的情况;- nullptr - 作为C++的null指针;- NULL - 作为C的null指针;- `\0`,L`\0`,_T`\0` - 作为字符串结尾符;- 0.0,0.0f - 作为浮点值的0;- false,FALSE - 作为false;
2016-12-10 12:16:13 586
翻译 翻译《有关编程、重构及其他的终极问题?》——8.记住:析构函数中的异常是危险的
对于异常,我在C++和Java中用的都不多,现在ES6的Node.js中因为使用了generator、Promise和co的同步化异步操作,不得不使用异常,但这个异常和传统的异常不一致。传统异常,特别是Java,往往会被那些懒惰的程序员们滥用,就像滥用延迟垃圾回收(完全不管内存的事情)。今天翻译的这节文章中,就说明了异常使用的一个禁区:一般不要再析构函数中抛出异常。当然,因线程栈释放抛出异常产生的问题还不止于此。
2016-12-08 21:48:01 470
翻译 翻译《有关编程、重构及其他的终极问题?》——7.不要在循环中调用alloca()函数
alloca()函数在线程的堆栈中分配内存,所以如果在循环中调用alloca()很危险,容易导致栈内存的溢出。有很多方法可以避免,比如使用循环内的栈变量替代(进入和退出范围会自动释放),或者在堆上分配(使用malloc或者new,但需要自己释放)。
2016-12-07 21:55:08 696
翻译 翻译《有关编程、重构及其他的终极问题?》——6.当把一个指针明确的转换为整型时,请检查所有相关代码
这篇是讲指针的,特别是从32位平台移到64位平台指针容易引发的一些问题,讲的有些深,所以除了对于一些资深的原生开发者而言,现在大部分的程序员都看不懂,当然这些非原生的程序员而言,看不懂也没有关系,他们不需要懂——他们都看不到指针了。
2016-12-06 21:33:10 549
翻译 翻译《有关编程、重构及其他的终极问题?》——5.使用工具去分析你的代码
如果遇到有些编程问题需要详细的了解相关文档的每一个部分,才能避免问题怎么办?去看文档吗?sorry,你得花费很多时间去看,这样就不能保证你有足够的时间去完成编程了。只有一个建议,就是直接用工具,比如PSV-Studio的静态分析器。当着这里作者好像忘了DllMain其实可以检测到被应用程序加载的状态,可以通过不同状态,调用不同的函数。
2016-12-04 20:10:32 563
翻译 翻译《有关编程、重构及其他的终极问题?》——4.小心--操作符,请把表达式放在括号中
?:三元运算符的使用,其实因为其优先级很低,所以容易导致很多错误,所以把相关表达式用括号保护起来,可以避免很多容易发生的错误。
2016-12-04 17:41:06 360
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人