JerryGao_ 2019-07-19 22:09 采纳率: 0%
浏览 534

Java怎么写出易阅读易维护易拓展的代码?

在用三层架构进行开发的时候有很多困惑,比如:
① Service层的话需要和Dao一一对应吗,比如有BookDao,是不是有一个BookService然后BookService里面有crud方法。这种方式合理吗

或者说我应该按照业务来划分,比如是人买书,那我就应该给这个行为建一个service类,可是这样的话对于人和书的crud方法应该放在Service层的哪里呢

② 还有一个问题是Service层的公共方法,比如人买书这个行为需要先看数据库里有没有这本书,人读书这个行为也需要这一步校验,这种类型的校验多了我肯定需要把他们抽离出来,但是我应该抽离成一个独立的Service还是做成工具类?
要是做成工具类的话,工具类可以引用Dao?因为这些校验需要查数据库。

③ 感觉最近做项目对于这些架构的问题很头疼,有没有想过的书或视频可以系统解答一下怎样写出合理的项目的,主要是合理的项目代码架构这方面。

  • 写回答

4条回答 默认 最新

  • threenewbee 2019-07-20 09:36
    关注

    你要知道,很多时候,你的多个目标是需要相互妥协才能找到折衷的办法的。

    好比往往价廉物美是不可得的,你追求物美,就要多花钱,你要追求价廉就要对质量妥协。

    在软件的设计方面来说,容易阅读的代码必然是简洁的代码。但是如果你要易于拓展,必然就要加重代码的复杂程度。比如说,你直接调用数据库这个就是简单。
    你要分层,然后调用一个接口,而把实际数据库的操作放在DAO,再实现这个接口,的确容易扩展了,替换数据库不需要改主程序,但是就不容易读了。

    所以,有经验的架构师和学生党的区别就是,前者才知道如何取舍,而讲理论,后者头头是道。

    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧