如何写代码

如何写代码

你不可能写出完美的软件。因为它不曾出现,也不会出现。

每一个司机都认为自己是最好的司机,我们在鄙视那些闯红灯、乱停车、胡乱变道不遵守规则的司机同时,更应该在行驶的过程中防卫性的驾驶,小心那些突然冲出来的车辆,在他们给我们造成麻烦的时候避开他。这跟编程有极高的相似性,我们在程序的世界里要不断的跟他人的代码接合(那些不符合你的高标准的代码),并处理可能有效也可能无效的输入。无效的的输入就好像一辆横冲直撞的大卡车,这样的世界防御式编程也是必须的,但要驶得万年船我们可能连自己都不能信任,因为你不知道冲出去的那辆是不是你自己的车。关于这点我们将在防御式编程中讨论。

没人能否认异常处理在 Java 中的重要性,但如果不能正确使用异常处理那么它带来的危害可能比好处更多。我将在正确使用异常中讨论这个问题。

DRY,Don’t Repeat Yourself. 不要重复你自己。我们都知道重复的危害性,但重复时常还会出现在我们的工作中、代码中、文档中。有时重复感觉上是不得不这么做,有时你并没有意识到是在重复,有时却是因为懒惰而重复。

好借好还再借不难。这句俗话在编程世界中同样也是至理名言。只要在编程,我们都要管理资源:内存、事物、线程、文件、定时器,所有数量有限的事物都称为资源。资源使用一般遵循的模式:你分配、你使用、你回收。

防御式编程
防御式编程是提高软件质量技术的有益辅助手段。防御式编程的主要思想是:程序/方法不应该因传入错误数据而被破坏,哪怕是其他由自己编写方法和程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。

一个好程序,在非法输入的情况下,要么什么都不输出,要么输出错误信息。我们往往会检查每一个外部的输入(一切外部数据输入,包括但不仅限于数据库和配置中心),我们往往也会检查每一个方法的入参。我们一旦发现非法输入,根据防御式编程的思想一开始就不引入错误。

使用卫语句
对于非法输入的检查我们通常会使用 if…else 去做判断,但往往在判断过程中由于参数对象的层次结构会一层一层展开判断。

public void doSomething(DomainA a) {
if (a != null) {
assignAction;
if (a.getB() != null) {
otherAction;
if (a.getB().getC() instanceof DomainC) {
doSomethingB();
doSomethingA();
doSomthingC();
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
上边的嵌套判断的代码我相信很多人都见过或者写过,这样做虽然做到了基本的防御式编程,但是也把丑陋引了进来。《Java 开发手册》中建议我们碰到这样的情况使用卫语句的方式处理。什么是卫语句?我们给出个例子来说明什么是卫语句。

public void doSomething(DomainA a) {
if (a == null) {
return ; //log some errorA
}
if (a.getB() == null) {
return ; //log some errorB
}
if (!(a.getB().getC instanceof DomainC)) {
return ;//log some errorC
}
assignAction;
otherAction
doSomethingA();
doSomethingB();
doSomthingC();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
方法中的条件逻辑使人难以看清正常的分支执行路径,所谓的卫语句的做法就是将复杂的嵌套表达式拆分成多个表达式,我们使用卫语句表现所有特殊情况。

使用验证器 (validator)
验证器是我在开发中的一种实践,将合法性检查与 OOP 结合是一种非常奇妙的体验。

public List demo(DemoParam dParam) {
Assert.isTrue(dParam.validate(),()-> new SysException(“参数验证失败-” + DemoParam.class.getSimpleName() +“验证失败:” + dParam));
DemoResult demoResult &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GitHub AI代码指的是利用人工智能技术在GitHub平台上进行代码的自动生成和优化。这种技术的出现,旨在提高软件开发的效率和质量,减少开发人员的工作量。 GitHub作为全球最大的代码托管平台,汇集了大量的开源项目和开发者。通过AI代码,可以帮助开发者自动生成部分代码,加快项目的开发速度。Github AI可以通过学习开源项目的结构和代码规范,以及利用自然语言处理和机器学习等技术,自动生成符合要求的代码。这样一来,开发者在开始新项目时可以更快地完成常见的、重复性的代码,从而更专注于解决核心问题。 与此同时,GitHub AI还可以通过分析和优化现有代码,提供更有效的解决方案。AI可以通过学习开发者的行为和思维模式,进行代码质量检查、错误检测和自动修复等功能。通过这种方式,开发者可以节省大量的时间和精力,同时提高代码的可靠性和可维护性。 尽管GitHub AI在代码的生成和优化方面具备很大的潜力,但也存在一些挑战。首先,AI需要足够的训练数据和开发者的参与,才能较好地完成代码生成和优化的任务。其次,AI生成的代码可能存在逻辑错误和缺陷,需要开发者进行检查和改进。此外,对于一些复杂的任务和领域知识,AI的能力可能仍然有限。 综上所述,GitHub AI代码是一项有潜力的技术,可以提高软件开发的效率和质量。但是,在使用AI生成和优化代码时,开发者仍然需要保持警惕,进行适当的检查和改进,以确保代码的正确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值