这不是忽悠(1):编写代码时要考虑跨平台
看到那么多“忽悠”,我想起了自己刚开始工作的时候,一肚子愤慨,老是觉得不合理的东西太多,老是觉得别人不理解自己。但是随着工作经验的增长,才发现观点在慢慢改变。
忽悠一:编写代码时要考虑跨平台
说实话,我想不到这么好的技术特性变成了忽悠。
或许是现在技术的发展使人变懒,java虚拟机的出现削弱开发人员的移植性意识,各个大公司都有专门的平台组提供api,为的就是当上层应用人员开发时只关注逻辑,而不用担心平台。这是技术的进步,它大大提高了开发的效率,但这并不意味着这项程序员的意识变成了忽悠。
以我的工作经验作为例子。我从事的是嵌入式设备的开发,最初先在一家大公司工作,平台组提供了完善的api接口,所以我开发时完全可以在vc上调试,无需等待硬件部门那不知猴年马月才能完成的主板设计,也无需忍受tornado那噩梦般的仿真效果。
后来我离职去了一家中等规模的公司,这里并没有提供平台组这么优厚的条件,当直接使用linux系统的api时,调试成了难题,要么安装linux操作系统,要么用虚拟机跑linux操作系统,两者调试都非常消耗时间(毕竟GDB没有windows可视化那么方便)。更别说要进行dsp视频开发时,使用仿真那揪心的等待(很多情况下,你并不会拥有一块dsp环境供你调试)。
你是否要抱怨公司不能提供环境?自怨自艾是生活的大忌,较强的适应环境能力会让你事半功倍。事实上,程序员只要有较好的跨平台意识,其在设计时会将平台性从设计中剥离,使其逻辑业务不强耦合于平台,并将平台进行单独设计成一个模块,当平台发生变化时不会影响逻辑业务的代码。正是拥有这项意识,当别人在使用dsp仿真开放视频时(仿真需要1分钟才模拟一张图片),我所开发的GUI已经在mfc上高速运行,别人还在调试时,我已经完成了gui的测试,并提交稳定版本(稳定运行在dsp上)。当别人在linux上开发一个模块时,我同时开发了三个模块,在windows上编写了大量实例测试我的逻辑业务,当将三个模块移植到linux时,我对于其稳定性已经心里有数。我相信linux牛人能够高效率的在linux平台上开发,但是我想强调的是在设计时注意剥离平台性,这本身是程序员的优秀意识,培养这种意识绝不是忽悠!
我的建议是如果你是驱动开发人员,可以完全不考虑平台(想跨也很困难)。如果你是应用开发人员,一定要培养“强内聚,低耦合”这种开发意识(平台性只是其中一个方面)。
最后一句,“编写代码时要考虑跨平台”并不是指你写代码时就要实现跨平台,而是在开发过程中要对平台相关的内容留个心眼,这在开发过程中并不会浪费你多少时间,但是对你今后的设计能力会产生深远的影响。