作为一个项目,该有哪些基础功能?
基于经验来讲,实事求是。
111
1
1
1.切面
切面用于运行期产生动态代理相关内容,可以在不改变代码逻辑的基础上对代码进行增强。但是仍然需要业务逻辑的配合,才可以记录比较准确的记录详细情况。
2.异常
异常机制为程序的健壮性提供了保障,同时也有一个比较实用的功能,就是如何对一个产品的提示信息做出描述。因为所有正常的,符合逻辑的情况都会在程序内部顺利执行。而所有异常情况均会在操作节目出现对应提示。所以捕获和抛出这种机制就很好的确认了这种形式。
3.枚举
枚举是为了保证确保程序在一处更改,处处生效的好帮手。在一种自动化处理的代码系统中,我们没有必要让交互变成字符串类型,也没有必要保证生成代码的可读性,我们只要保证我们的逻辑绝对正确,因此枚举是必要的。我们唯有通过枚举来决定我们项目的一个统一处理。
4.Http
作为最常实用的网络协议,无数的产品都是基于此展开。我们着实没有必要绕开这个东西。这个协议的任何变化,都会影响我们产品。我们产品是息息相关的。我们有必要根据一个协议绑定吗?有必要。
5.存储
缓存是和存盘是两种选择。
我们的系统规定可以在不同存储策略之间灵活变迁。
6.逻辑存储和阻断
我觉得数据库的存储在于逻辑存储和物理存储。数据库的实现有什么逻辑的,物理的。但是我们肯定还是挺喜欢逻辑的。物理和逻辑这个区别是有的,我个人喜欢逻辑,因为可迁移。
7.全局静态资源和动态资源
有人十分不喜欢全局的,静态的,因此在考虑代码质量时,要尽量减少这些代码的出现。
spring则是做了全局动态资源的统一调度,实现了一种代码的跨越。
8.工具类的使用
工具类可以极大减少原声API的使用难度。工具类是典型的静态资源,因此也会污染代码
9.反射的使用
理论上说这类东西不可见,不可预知,因此我们没办法控制。因此尽量减少使用吧。
10.关于路径问题
写死的一些路径在项目中,十分的不好改变。但是有些路径又是随意的。更甚,和操作系统有关的路径问题是典型的历史遗留问题。
11.线程的使用
线程+缓存,可以达到十分神奇的效果。但是同时也复杂化代码。出了问题十分不好排查。
12.日志
日志理论上是为了记录异常,排错。因此有必要做全局的,统一的管控,而且为了减少数据量,尽量在出问题的时候记录。而且相关的上下文也要记录。日志的功能很简单,就是一个简单的命令行/文件输出的问题。
API风格
采用统一的API风格会大大减少不必要的代码量和数据量。同时因为返回的数据格式规范,因此也容易做成分布式,远程调用函数的形式。
单元测试
理论上,因为是按照模板的业务逻辑生成对应的代码,我们就可以生成对应的单元测试代码。单元测试无非是将所有的逻辑进行覆盖,最终去掉不必要的逻辑判断的过程。因此规则设计的越复杂,越成熟,越会生成完整的测试代码。
聚合和解耦
理论上,越高效的代码,其可读性越差。因此在代码优化的道路上,可否朝着逐渐生成看不懂的代码为主呢?然后一步步朝着c语言,朝着汇编语言过渡呢?
然后以0和1为边界,将软件进行高度聚合,简单解耦。是否可以过渡到一种十分高效的时代?
机器学习和代码
机器学习是经验主义的高度复制,而这个系统最初其实就是积累经验,因此和该系统并不冲突。等到真的形成了一种复杂,高效的框架,这时候按照深度学习框架跑的算法啊,性能啊,可以实时被调到最优,我觉得这是最终目标。而拆当下最流行的学习框架,补一些数学相关的知识,则是项目最终过渡到这个领域的一个福利。