翻译自Xamarin官方文档《Creating Mobile Apps with Xamarin.Forms》
编程有很多乐趣。这些乐趣包括分析问题,把问题分成若干小块,制定解决方案,制定策略,从不同方向达到目的,最后优化代码。看到自己的程序第一次跑起来是非常开心的,之后重新回到代码中的进行代码重构令程序变的更快更好则会令人更加开心。
为了确保程序运行正确稳定,在解决Bug的过程中也很有乐趣。在一些情况下乐趣就像最终确定了一个无比奇葩的Bug并确信解决掉一样令人开心。
甚至在认识到最初采用的方法并非最好的方法的时候也很有乐趣。许多开发者发现他们在编写程序的时候学到了很多,包括找到更好的方法构建代码。有时候,一部分甚至全部的代码重构会编译出比之前强大很多的应用程序,或者仅仅是为了是代码结构变得更有条理和便于维护。这个过程就像是站在别人的肩膀上,在获取别人的思想和知识的同时也会得到很大的乐趣。
然而,编程并非在所有方面都很有乐趣。其中一项令人不爽的编程工作就是接手一个已经完成的项目然后用完全不同的编程语言或者用一套完全不同的应用程序接口(API)将它移植到另一套操作系统中。
一份类似这样的工作绝对是一件苦差事。然而,这样的重写工作也许是非常必要的:一个在iPhone上十分流行的应用程序可能在Android设备上会更受欢迎,而解决这个问题的唯一方法就是重写代码。
但是这里有一个问题:当你研究源代码然后将它移植到一个新平台的时候,你是要维护两套相同的程序结构并因此而存在两个平行的版本么?又或者你会尝试做一些提高和改进呢?
有吸引力的当然是完全重新考虑应用程序然后编写一个更好的新版本。但是这两个版本相差的越多,将来在维护他们的时候会越麻烦。
因此,在将一份应用拆分成两个的时候就会产生一种恐惧感。因为你会想到对于你写的每一行代码,在将来的维护,修改和优化程序的时候,会从一份工作变为两份工作。
这并不是一个新问题。超过半个世纪的时间里,开发者都在努力拥有通过只编写一份程序而可以运行在不同的平台上的能力。这是高级语言当初被发明的原因之一,同时也是为什么“跨平台”概念可以持续给开发者带来如此强大的吸引力的原因。