Tag: 软件工程
技术债 Technical Debt 是软件工程上特别是敏捷开发 (Agile Development) 中的一个概念. 指的是解决一个当前问题最好的方法往往需要更久的时间和精力, 但是为了加快软件开发进度, 赶在代码冻结前按时交差, 采取的一个较为折衷的解法方法. 但是这就是一笔债一样, 可能会把潜在的问题越积越大(利息), 甚至将来却无力偿还(修复). 1年半前, 我提了个BUG, 这个BUG大概是说一种数据文件里如果用TAB而不是空格来隔开字段, 则导入数据过程中软件会崩溃, 这个BUG的确是有效的, 因为把这数据文件放到别的软件中导入则是没有问题的. 前前后后讨论了半年, 然后总算被批准了, 不过由于开发任务繁重, 而且也不是那种非改不可的BUG, 所以就一直拖, 拖到今年10月份, 突然接到邮件通知: “agreed to …
在代码出现性能瓶颈的时候,我们通常使用性能评估软件也就是Profiler 来查看代码中到底是哪几行,或者哪几个模块比较耗资源(速度慢或者占内存). 最近我就用 Profiler 跑了一下,发现我写了几处无用的代码.具体如下: 每行代码左边那个数字是被调用的次数,中间是执行时间(毫秒),右边是子函数的执行时间.我红色标出来的执行次数都是 1498179,而在进入这个函数的前几行都是在判断,如果条件不符合就立马退出函数,避免继续往下执行而导致程序崩溃(数组访问越界等). 但是明显来说,这几行代码都没有起作用.删掉这几行代码能省下2-3秒的执行时间.其实这种编程风格是 “Defensive Programming” 也就是处处加些判断(比如判断对像是否为 null)而不让程序崩溃.但实际上并不推荐,因为最好是一遇到错误就立即抛出异常,这样可以让我们更早的知道潜在的问题,而不是隐藏错误. 英文: The profiler told me I wrote some useless code (An Example of Defensive Programming) 本文一共 305 …
一种观点是 写更多的代码 程序员就更有经验 这样程序里错误就会相对少一些. 但这并不是 说代码越多越好. 如果能用更少的代码完成更多的事 那么越少的代码隐藏的错误就更少. 统计代码行数只会鼓励糟糕的代码. Less is more! 代码审核 可以由多种方式来完成 比如可以结对编程 (Pair Programming) 或者可以由专门代码仓库负责人 按阶段审核并接受提交. 有了代码审核以下的错误就会少了很多. 英文: https://helloacm.com/case-study-importance-of-code-review/ 本文一共 171 个汉字, 你数一下对不对. 再谈代码审核的重要性. (AMP 移动加速版本) …
没有单元测试的工程就不是好工程, 至少不是大工程. 在 Visual Studio 里可以很方便的进行单元测试的创建和运行. 下面的教程是基于C#但是也可以很容易的应用到其它语言,比如 C++. // Example: How to Create Unit Tests // helloacm.com using System; namespace ClassLibrary1 { public class Class1 { public int GetEven() …
VMProtect 是一款很有名的保护 native 程序的软件,由俄罗斯人开发的.被保护的软件/程序很难被反编译,是业界公认的利器.其中VMProtect 可以很简单的配置让程序无法在虚拟机下运行机制,如果在虚拟机(比如 VirtualBox) 运行保护的程序,就会弹出(默认,可定制)的错误,比如: 而这些,只要在VMProtect 的界面下 简单的配置成 Yes 就可以: 在 Win8.1 下, 有一个新的功能可以安装: Hyper-V (控制面版 – Programs and Features – Turn Windows Features on and off). …