转前端开发的“苦逼”记录
六月份由于搬家,换项目组(其实主要是自己懒)的原因没有更新博客,惭愧惭愧。
参加工作不久之后遇到了一份超级nice的leader,有时和他闲聊提到了做后端开发也可以适当了解一下前端的内容。正好我本身也做了两年的后端开发,也希望多了解一些东西,毕竟在一个点上很难看到整个软件的全貌。趁着换项目组的机会向公司申请了一下,没想到老大们很快就同意了,于是我开始了前端生涯。
由于客户与项目的一些历史原因,二狗子下面提到的东西可能是很古老或者小众的,各位看官不要见怪哈。
第一个实战的内容是在Admin系统里添加一个子页面实现某新增Item的增删改查。这里提一下项目背景,是一个很“古老”的项目组,距今已有十多年的时间了。所以一些当时先进的技术,现在看来也是上古的东东了。因为不是很着急上线,所以前后端都由我来完成。后端没有什么特别难理解的地方,我很快就完成了。
关于后端代码给我的感受是,十年老项目真的不一样。先说说优点罢,首先是底层代码的实现。不像现在整个项目的开发过程中有各种各样的框架来辅助,这里的方方面面都需要自己来实现一遍。当然我做到这里的时候直接拿来用就好了。但看看源码就能深切地感受到,很多东西自己只知道个皮毛,可能也就比在学校的时候了解的深入一点罢。如果交给我来写,说实话现在我打不到这个水平来抽象到这个层次。也想不到一些方法来解决项目中遇到的问题。又比如数据库升级脚本准备的严谨性,多次的review,脚本中也要预先准备到对各种情况的处理,不像我之前,随随便便实现需要的改动就提交。再来说说缺点,可能这些也是无法避免的东西。这么多年的开发,参与开发的人员换了一拨又一拨,各种风格的代码规范都能见到。又或是类似的功能,明明可以共用却多次实现等等。另一方面,缺少必要的文档与注释。首先是文档方面,由于涉及到的概念太多,又没有一个实时更新的文档,导致只能不断去项目组的老成员,耽误两个人的时间。仅仅弄明白项目中涉及到的一些概念就开了三五次会,摸索了一周。另一方面是注释,项目开发中总是会遇上一些比较难处理的逻辑,或是来源于功能的实现,或是业务逻辑的要求。这就导致很有可能会整出一份Magic的代码,这种代码又没有注释,看起来真的是要多难受有多难受。
后端的任务没花多少时间就完成了。这个项目中前端用到的主要技术是WPF和Silverlight. Silverlight不管你听过没听过,反正我来之前是没听过。听老大提到了一嘴,这个玩意是当初微软搞出来用来对抗Flash的。但现在这个形式如你所见,基本两者都挂掉了。前后端交互有一个我之前没遇到的情况(毕竟之前在的项目组都太小了)。Interface和Model是定义在Common的Project中的,并且前后的solution都会引用这个project。并且在Model中更是有# IF Silverligth这种写法来为前后端各自定义需要的属性。也许这个做法在别处很常见,但我第一次遇到真是觉得很赞了。
之前对前端的内容一无所知,经过这个项目上手多少也有一些大致的了解。就像服务端逃不过数据库交互,身份认证,业务逻辑实现等几个大方面一样,就我目前看来,前端的开发过程中也可以分成这么几个大类。与服务器交互,导航逻辑的实现,画页面(各种控件,样式),数据展现(页面上展示与服务器交互),交互逻辑的实现等等。当然这只是我一些简单的见解,如果有哪里不对的还望各位看官不吝赐教,二狗子在这儿谢过各位了。
而由于前端之前已经有了各种实现好的控件与样式,所以实际上这个任务中我只是当了一把代码的搬运工。最大的感受是,Binding这玩意真好用,哈哈。然后就是样式这个东西真的挺难处理的,也可能是我没有学到家吧。说是要记录“苦逼”的转岗生活,实际上好像记录后端的内容更多一些,哈哈。这篇就这样吧,前面还有更坑的Xamarin等着我呢,加油吧 二狗子。