软件技术学习笔记

个人博客,记录软件技术与程序员的点点滴滴。

软件设计与架构书籍

格雷迪说过:“所有的架构都是设计,但并非所有的设计都是架构”。

软件设计,可以提升代码的可阅读性、可维护性、可扩展性等;一个设计点对软件整体影响比较小,发生变更时代价比较小。避免过度设计,避免无设计,需要找到平衡点才能提升团队的生产效率。本文只关注编码上面的软件设计,不涉及需求分析等其它内容。

软件架构,可以提升系统的可用性、稳定性、高性能等,一个架构点可能影响到整个软件的结构、依赖关系、部署形态等,发生变更时代价往往是巨大的。即使在敏捷组织中,架构点往往需要在相关编码之前确定,编码过程中只进行微调——流程上与软件设计有比较大的差别。

本文中推荐一些软件设计与架构相关的书籍。我先接触到敏捷软件开发思想,所以,从设计模式到软件架构的很多书籍都跟敏捷宣言大佬有关。

软件设计与架构书籍

继续阅读→

GoLang程序员修炼之路

在高性能Web服务领域,GoLang使用广泛,不需要依赖第三方库就可以开发出一个Web服务,比C++方便许多。GoLang是一个拥有垃圾回收机制与闭包的静态Native语言。

GoLang拥有良好的软件生态,社区代码一般都共享到GitHub中,代码中可以直接导入Git仓库的第三方模块。从第三方模块管理、代码格式化、静态检查、构建、单元测试到性能测试等,都包含在GoLang官方工具包中,人们很容易编写出符合软件工程规范的代码。在云时代,GoLang拥有良好的前景。

GoLang书籍

继续阅读→

前端程序员修炼之路

在Web端、移动端、部分桌面客户端,很多用户界面都是HTML/CSS/JavaScript实现的。在性能要求不是特别高的场景,使用前端技术可以提高生产效率,让公司能够抢占先机、创造更大的价值。近10年来,前端技术一直在突飞猛进地发展,各种框架、库、设计理念层出不穷。

HTML/CSS是基础材料,JavaScript/TypeScript才是前端生动的灵魂。前端也能使用到设计模式、架构模式等高级设计理念,如单例模式、工厂模式、观察者模式、事件溯源、CQRS、BFF、MVC/MVVM等。最后,还需要学习前端工程化,静态检查、资源合并/压缩/混淆、资源缓存策略等。可以说,前端有一套独特的、完整的软件体系。

前端书籍

继续阅读→

C++程序员修炼之路

在掌握的几个编程语言中,C++是我花费学习时间最多的编译语言。但是,掌握了C++,再去学习Java、C++等面向对象语言,都非常容易上手,几乎只需关注不同点。

C++是一门最复杂的高级编程语言,说要精通C++,如果不疯狂学习与使用,一切都是妄想。在学习C++的路上,不知道多少人在途中退缩了。从工程的角度,在项目开始时,如果有其它的编程语言满足需求,就不应该选择C++。在项目中,需要综合考虑人员技能、人员替换、程序信息反馈等因素。在高性能应用领域上,如游戏、计算机视觉、高体验客户端、低功耗物联网(IoT)等,C++仍是无可代替的。

C++书籍

继续阅读→