本文将分享一下我一个人开发后台接口时的一些实践经验,后续并不会涉及到具体的代码编写,因为每个人的情况都不一样,这东西很难讨论,也没有讨论的价值。
说在前面
一个人开发正常都只能做些中小型的项目,当然肯定存在大佬能够一个人撸出一个大型项目,但是这往往会比较耗时间,如果想要让一人工作室盈利,还是选择快速开发小项目的成功率会更高,当然这只是从《一人公司方法论》学到的理论知识。一人工作室这种存在形式也只是一种探索而已,如何盈利还是需要更多的同行一起讨论交流才能得出。综上所述,后续我将以中小型项目作为讨论对象。
尽可能使用简单的项目结构
对于中小型项目而言,一般只要开发一个接口服务就可以了,服务实例往往也只需要部署一个就足够了。因此应该尽可能使用简单的项目结构,简单的项目结构可以降低代码复杂度、提高开发效率,从而实现项目的快速迭代。
正如前面的文章提到的,使用 Spring Boot、asp.net core 这种既流行又简洁的通用型框架,无疑是最合适的选择。如果服务实例只有一两个的话,有必要用到服务注册、服务发现吗?有必要用到 api 网关吗?答案很明显,因此千万不要选择微服务或云原生了,没必要。当然如果是想用项目练手的读者,可以忽略。
我是 .net 程序员,因此经常会看到一些项目是使用 DDD 模式来开发的,我不是很了解这个模式,也没资格评价,我只是想根据自己的经历表达一下自己的观点,那就是绝大多数项目代码都是乱七八糟的,而且一个解决方案分了很多个项目,但是很多类的划分又不规范,应该归类为项目 A 的类,可能在项目 B 出现。我相信大概率是因为部分 .net 开发在实践 DDD 的时候,对该模式的理解不够透彻,导致了这种现象。所以,我建议一人工作室开发项目,可以不去使用这些编程模式,你自己的习惯就是规范,因为这些代码只有你一个人在维护。
尽可能少地使用基础设施
使用到基础设施就需要买资源,要么自己买服务器搭建基础设施,要么直接买云服务,后者肯定是不建议的,因为云服务的价格实在太高,对于一人工作室来说是一笔相当高的成本。虽然我一直在建议买一台服务器专门用于搭载基础设施,但是如果你用到的基础设施多了,那么资源要求肯定也会越来越高,成本自然就会上升。
因此我建议尽可能少地使用基础设施。我认为有三个基础设施是比较有必要的,一个是数据库,相信对于大部分开发者来说,数据库都是必不可少的;第二个是 redis,redis 对我来说是一个复用型基础设施,因为她 可以用来存储缓存数据、共享 session、作为消息队列、实现分布式锁等等;第三个就是 nginx,nginx 可以用于负载均衡、代理,还可以搭配 Let’s Entrypt 为你的域名提供 https 能力。
除了以上三种基础设施,我建议在你想要使用新的基础设施时,结合需求以及资源情况,仔细考虑、权衡。
封装代码,提高开发效率
每个人在开发时,肯定都会有一些专属于自己的开发习惯,比如对于类库的选择、逻辑判断的方式等。如果是在日常工作中,需要与同事合作开发项目,可能不好去封装一些代码,然后跟别人说以后这个项目就基于我封装的这些代码来写,因为每个人的习惯不同。但是如果是一人工作室的话,就没有这个顾虑了,尽情享受自己的编程习惯,尽情封装自己的常用代码,这不仅能提高你的开发效率,同时也能让你心情愉悦,谁还没有代码洁癖呢?
如前所述,我是个 .net 程序员,因此接下来我会介绍两种提高 .net 程序开发效率的方法:
封装程序包,上传到公共/私有 nuget 服务器 正如上面所提到的,封装自己常用的代码来提高效率,我个人就会把一些代码封装成库,上传到 nuget。
如果你不想将代码上传到公共 nuget,可以搭建私有 nuget 服务器,网上有很多搭建教程,读者可自行选择。以下截图是 BaGet 的快速启动方法。
创建自定义项目模板
关于创建自定义项目模板,我之前整理过,并且写过一篇博客 ,感兴趣的读者可以看看。创建自定义项目模板能够在新项目启动时节省大量的时间,因为这个模板中可以集成所有你自己常用的组件,在创建新项目的时候只需要一条简单的命令就可以创建出组件集成度很高的项目骨架了。
dotnet new base -n TestProject --json false
这条命令是从博客中截取出来的,以供读者参考。
最后
在泉州旅游指南项目中,涉及到了用户模块,相信许多开发者也都接触过这块业务,应该也了解开发用户模块是需要较多时间的。一人工作室项目的用户模块肯定比在公司在项目要简单许多,但是也是需要耗费比较多的开发时间,而且如果一个项目就要开发一次用户模块,显然是很费事的。因此,下一篇文章我将会介绍一下借助 OAuth 快速实现用户模块功能的方法。