java如何编写业务代码_怎么样才能写出比较理想的业务代码

我没有什么Java经验,看到标签里有PHP,来按照PHP的路子回答一下,可能Java有自己的风格,但我觉得本质应该通的

我觉得理想的业务代码的判断依据应该是清晰易懂、易维护,不会因为环境的变更需求的叠加而迅速坏死,这和过程式还是OO,抽象还是不抽象并没有直接关系

那么什么是最容易维护的代码呢?

我认为是英文。就是需求文档本身,假设需求文档本身就能跑起来,那可维护性一定是最高的

那需求文档和我们日常写的代码之间的区别在哪里呢?我认为主要的却别就是我们的代码除了需求(业务)以外,还描述了实现方式,除了what to do,还有how to do

好比需求文档可能是这样的

在表单中输入名字、价格和描述,点击提交按钮生产一个产品,名字不能为空,价格是小数,描述可以为空

代码可能是这样的

conn = sql_connect('xxx.xxx.xxx.xxx');

inputButton.on('click', ->

assert name is nonempty string, price is float, price > 0, ....

conn.query('INSERT INTO product VALUES (.....)');

)

看,需求在代码里被实现淹没了,我们按钮是点击的,数据库是sql的,表结构是sql语句里写死的……只有当那么多前提条件恰好工作,这段代码才能正确地反映需求

那么我觉得理想的代码应该就是需求文档的英文版,可能恰好符合某种语法规范,但里面绝对没有任何实现的细节。

比如

form = new Form();

form

.addField 'name', Form.String, [Assertion.NONEMPTY]

.addField 'price', Form.Float, [Assertion.POSITIVE]

.addField 'desc', Form.String, [Assertion.maxLength(65535)]

.onSubmit ->

Product.createProduct(form)

然后我可能会以这样的业务代码为目标开始设计整体结构,Form类和Assertion类合作提供表单构建、验证能力,Product里封装关于存储的细节等等。

哦,这个思路有个很帅气的名字叫DSL,在任何高级语言的基础上,通过合适的设计其实设计这样的DSL都不难,可能最初的代码量工作量会稍大,但稍后你会发现,只要产品需求文档还是人话,你要做的事情就是简单的翻译。加业务就只会改业务代码,环境变化或者性能优化或者新的DSL语法就只会改实现代码。这件事看上去很像是抽象,但和软工传统的抽象有所区别:抽象的目的是复用代码,而分离DSL的目的是分离业务和实现,前者可能希望代码少一点,认为代码复用就能提高可维护性,后者则不在乎代码量,认为业务和实现分离才能提高可维护性(虽然这种分离基本上意味着实现的部分可以复用)

写完一看发现似乎和PHP也没啥关系,其实我就是不懂Java SSH的service那一套,可能没啥针对性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
登录业务Java代码可以分为前端和后端两部分。 前端代码主要负责用户输入账号密码,将其封装成请求并发送给后端。 后端代码主要负责接收前端发送的请求,验证账号密码是否正确,并返回验证结果给前端。 以下是一个简单的示例代码: 前端代码(使用HTML和JavaScript): ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function() { $("#login-btn").click(function() { var username = $("#username").val(); var password = $("#password").val(); $.ajax({ url: "/login", type: "POST", data: {username: username, password: password}, success: function(result) { alert(result); }, error: function(error) { console.log(error); } }); }); }); </script> </head> <body> <h1>Login Page</h1> <form> <label for="username">Username:</label> <input type="text" id="username" name="username"><br><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br><br> <input type="button" id="login-btn" value="Login"> </form> </body> </html> ``` 后端代码(使用Java和Spring框架): ```java @RestController public class LoginController { @PostMapping("/login") public String login(@RequestParam String username, @RequestParam String password) { // 验证账号密码是否正确 if (username.equals("admin") && password.equals("123456")) { return "Login success!"; } else { return "Login failed!"; } } } ``` 这个示例代码,前端通过jQuery的Ajax发送POST请求到后端的/login接口,并将输入的用户名和密码作为请求参数。 后端通过@RequestParam注解获取请求参数,并验证账号密码是否正确。如果正确则返回"Login success!",否则返回"Login failed!"。前端在接收到后端返回的结果后,使用alert弹出提示框显示结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值