软件开发工程师进阶之路(一)

目录

1.框架

2.架构

3.编程语言

4.代码结构


从毕业至今,已有四个多年头,对自己的定位亦从刚开始测试开发,转向软件工程师,目前的目标是架构工程师,之后再达到全栈工程师的目的。

1.框架

框架( Framework )是构成一类特定软件可复用设计的一组相互协作的类。框架规定了你的应用的体系结构。(参考百度百科:“框架”

框架,个人理解,其本质是提供已经封装好了的一系列类和方法;

在应用程序中使用某框架,实际是使用了框架中的基础类库;

一个好的框架,其本身是经得起推敲的,经得起大多数考验的;

使用框架的好处就是可以避免重复制造没必要的轮子(详细参考知乎:“轮子”);

如果要真正了解框架如何实现,还是需要参考框架源码,再自己去重复造一遍轮子。

2.架构

架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计(详细参考百度百科:“架构”

对于这个名词,可能更多听到的是架构工程师(详细参考百度百科:软件架构工程师)这个职位,其工作内容就是为我们的软件搭建架构;

而在整个软件的生命周期中,个人理解,架构包含的内容(认为也是一个架构工程师所要求具有的能力)有:

①软件定义——需求(分析)文档、设计文档等;

②软件开发——确定软件各个组成部分(如服务器端、客户端)所采用的编程语言、框架、技术、依赖软件等,组成部分之间的API接口定义(非必要),用户界面(非必要)、操作流程以及商业逻辑,软件版本控制等

③软件测试——测试场景、测试用例、bug管理等;

④软件维护——软件部署、软件发布等;

3.编程语言

人的精力是有限的,个人认为掌握的编程语言不在于多,而在于认清编程语言的本质。使用不同的语言编写而成的算法(程序),都是将遵循编程语言语法的代码,编译(或解释)为可运行平台上所能够识别的指令,运行指令以完成某一目的

认为不同的编程语言,没有好与坏的区别,只有适合和更适合的差异;不同语言之间的差异在表面上只是不同的语法,不完全相同的函数名称,不同的实现方式。就像汉语“你好”用英语来说“Hello”,法语则是“Bonjour”。

对于第一门语言的选择,建议还是从高级编程语言入手,可以不用了解其是如何被编译为汇编语言而被机器识别的这个中间过程。而在工作中,具体选择哪一门编程语言来解决实际问题(如果没有大牛进行指导),个人认为:

①首先需要考虑的是活跃用户量(可以在社区或网站上得到更多解决问题的方法、有更多的案例、源码等供参考学习)

②其次是参考成功案例,主要从实现难度(认为主要是看该语言相关文档的完善程度、第三方库的数量上)、易用程度、扩展性、可维护性等多方面

③基于前两条,需要再从效率、可维护性、可扩展性、可移植性等多方面考虑,挑选出最为合适的开发语言。

另外的,对于编程语言,面向过程语言编写出的代码可能在结构上更易理解(如C,一长串逻辑),而面向对象语言则更符合对世界的认知习惯(如Java、C++、C#、Python等)。

4.代码结构

作为一个从测试开发一路走到目前的软件开发工程师,工作内容会从最开始的完成几行代码、完成一个方法到完成一个功能,再到完成一个具有多种功能的软件应用程序。

过程中也意识到,一个清晰合理的代码结构,对于后续的开发维护、代码可阅读性、易理解性上都有着巨大的帮助。

对于独立完成一个软件应用来讲(以面向对象的开发方法为例),个人认为应该按照以下顺序去思考软件整体代码结构(属于上文“架构”中第②小节软件开发中的内容):

①分析需求中涉及到的具体对象,并将其抽象为代码中的类

②分析具体对象之间的关系,将其抽象为类之间的关系(继承、实现、依赖、关联、一般关系等,详细参考:面向对象编程中类与类之间的关系),确定基类、接口中的成员;

③根据实际情况,考虑设计模式的运用(例如笔者会使用到的单例模式、观察者模式等,详细参考菜鸟教程:设计模式详解)。合理的设计模式的使用,对熟知此设计模式的其他开发人员,可快速理解当前代码结构;

④良好的编码习惯。如:注释的添加、成员(字段、属性、方法)的书写格式、代码自测、协同工作时即使提交代码等等;

⑤代码的可复用性好、避免冗余代码。良好的继承关系、多处使用的相同控件进行自定义统一实现等都使得代码可复用性好,但要注意尽量减少公共静态方法的使用(会增加内存占用,特别是对于一个大型软件系统而言);

应用场景、用户体验等的考虑,软件程序最终是为了交付给用户去使用,程序设计之初就要考虑到用户使用上的问题,比如:耗时操作要放在后台线程而不是主线程UI线程中处理、用户当前操作场景要采用同步还是异步方式实现、代码异常处理以方便定位问题并避免程序崩溃、多线程编程时的线程同步以及数据安全、高并发情况的处理(笔者亦在学习中)等等。

认为,一个清晰合理的代码结构,是软件稳定健壮的前提。一个错综复杂的代码结构,不利于问题定位,并且会导致代码可维护性、可阅读性差等问题。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值