CRUD感悟

没错,其实说透了,写程序就是使用特定的编程语言进行CRUD(增删改查)。

作为程序员,在实际工作中需要做的事情本质上就是:把产品需求转化为程序,把产品逻辑转化为代码逻辑。

梳理产品逻辑:

产品给出的是产品原型、需求文档,你需要根据产品原型、需求文档,梳理出产品逻辑。

产品本身只关注输出的产品是否满足客户的需求,可能着眼点并不在如何实现上,逻辑是否合理上,尤其是没有技术背景的产品。这时,作为后端开发人员,需要去构想几件事情:

  1. 这个页面需要几个接口,这些接口分别返回什么数据?
  2. 根据整体的产品原型,进行核心概念领域划分:订单、库存、商品、用户、积分、还有其他什么吗?
  3. 以上核心概念之间是否有关联?如何关联的:新增订单时,会影响库存吗?用户下单后会影响积分吗?

就是上面的三件事情,第一件事情可以让你学会设计接口;第二件事情可以让你透过现象看到本质,抓住核心概念,设计数据库表;第三件事情,可以让你梳理清楚某个功能会涉及到哪些表的增删改查。

好,那么看来不是简简单单的CRUD了,是基于产品需求表象,深入挖掘出核心概念,然后梳理清楚几个核心概念之间的关联,然后几个核心概念相关联的CRUD。

系统设计:

要实现这个功能,需要使用那些中间件:需要使用缓存吗?需要使用消息中间件吗?需要使用定时任务吗?我们的场景有哪些特殊之处吗?针对这些场景应该如何去技术选型?

要使用单体还是微服务?需要进行服务下层吗?要如何进行服务划分?粒度粗一点好还是细一点好?

系统面对的并发量有多大?需要如何条件Tomcat参数?需要部署多少个实例?需要如何调节JVM参数?数据库可以承载这样的并发吗?

数据量是怎样的?Mysql可以满足吗?

接口设计 :

Web接口设计满足个性化,只针对性的满足某个页面需要的数据。

RPC接口设计要满足通用化,你的RPC接口会有很多人调用到,复用率比较高,比如一个查询订单的接口,返回的订单BO字段应该尽量冗余,A会需要订单基本数据,B会需要订单联系人的手机号码,C会需要订单对应的商品名称等等。

表设计:

表设计一般情况下还是要满足三大范式。

字段尽量不要冗余,一旦字段冗余,查询时候是方便了,但是更新时就容易因为更新不到而导致脏数据。

字段长度要合理,对于手机号而言,varchar(20)足矣,没有手机号可以超过20位,如何使用默认的varchar(255)就平白无故地增加空白空间,在查询、更新等操作时给Mysql造成不必要的负担。

写代码:

没想到吧,最后一步才是写代码,只要思路清晰了,代码会很清晰。

上面我们已经根据梳理出了产品逻辑,所谓的产品逻辑,可以类比于:

新增订单:

1.插入一条订单;2.删减订单对应商品的库存;3.根据指定的规则给下订单的用户增加积分。

写代码时,也应该是在“搭积木”,而不是“玩泥巴”。

搭积木:先根据产品逻辑确定代码框架,先把主流程写出来,把需要的方法定义写出来(要对定义的方法有明确清晰的定义),然后再慢慢往里面填代码。

玩泥巴:根据思路写到哪里算哪里,从前到后,没有思维框架,拖泥带水,方法没有做到复用,逻辑重复。

最后总结一下,只要掌握正确的方法,写代码不过就是根据事先梳理出来的产品逻辑,用搭积木的方式把产品逻辑转化为代码逻辑而已。SO EASY

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值