请教关于项目结构、编码技巧的一堆问题,或求类似的能够帮助我的书籍,谢谢 QAQ

本贴最后更新于 2669 天前,其中的信息可能已经事过境迁

想请教各位大佬自己在做项目过程中的很多问题。
自己以前在大学学 java 非常随意,基本都没怎么看过别人的代码。一直自己学自己的,做自己的,全都是挑自己喜欢的去学去用,不喜欢的基本抛一边不管了,以前不喜欢 web 开发,所以学 java 完全在搞些其他东西,比如拿 java 写小游戏,扫雷什么的(是不是很奇葩?哈哈),同学学 java 很多是做业务逻辑,调用 api,我就不想,我偏要自己去实现这些 api,自己写数据结构和一些算法。喵了个咪的,然后就是一堆 java 的 api 不会,自己写的又因为各种水平关系,垃圾得一比,反正就是自己对 java 的认识以前一直不是很正常,前段时间看了一下别人的经验才知道应该拿什么样的态度去 java 和 c\c++ 这两种语言,虽然他们感觉好像都差不多,java 还比 c\c++ 简单很多。但是实际上是关注层面不同罢了。
扯远了,总之自己对 java 的认识刚纠正过来就快要实习了= =。
结果刚工作...在公司就遇到了总监总是让我一个人做项目,或者是让我一个菜鸟领着几个更菜的菜鸟写代码。
写出来的项目感觉结构好差..自己都看不下去那种。
所以诚心想要请教各位一个关于项目结构设计和编码技巧方面的东西。希望各位大佬能够分享分享自己的一些经验,
谢谢各位了 QAQ。

举个例子:

比如我现在遇到的一个情况,目前在用 spring boot+react 这种前后端结构,做 restful 风格。
当前端需要 json 数据,数据库存储的某个字段是用数字表示一种状态,
比如 0 代表未发放,1 代表发放成功,2 代表发放失败。
我应该在前段进行这种数字到字符串的转换还是在后端去做。我现在想到的是在后端做,
因为我想前端尽量只控制简单的页面逻辑,数据处理全部在后端。然后我在后端就写成了这种形式:
7512981645314bf299585edbff1031c3-YAH6XPRIVAUJEXESBW8.png
,然后在字段的 getter 方法中根据值来进行各种映射:
a24f6a2913db43fdbe81ada2b94f051b-XL6873L8D4U59B6K.png
。这样的解决方案可行吗?有没有更好的解决方案?或者说还是由前端来进行转换?
或者说有什么好的优化方式?我感觉自己对这些东西没有什么好的办法

还有

比如说一个前端提交的添加的一个商品保存到数据库,但是呢,表单的数据肯定是不完整的,我们应该在服务端
最这个商品进行默认的字段填充,应该放在 controller 中还是 service 中?还有商品的数据肯定不可能只对应一个表。
比如商品的一些预览图片会将其 URL 地址存储在另一个表中,并与商品进行关联,
这种情况,应该写一个商品 service(GoodsService)和一个图片 service(ImgService),
我应该在 controller 中调用两个 service 的插入方法还是说我在 GoodsService 中调用 ImgService 的插入方法?怎么处理最好?

然后就是对于错误处理,比如 service 中的插入方法,然后限定的商品名不能相同,我应该在 service 中进行判断还是在 controller 中进行判断?如果是 service 中,那么出错原因我应该怎么发送给前台?通过 throw 一个 exception,然后使用统一异常处理(我查了一下,好像都建议能不用异常就不用异常)?还是说让 service 返回一个值,然后 controller 去接收?那么我应该返回什么值?多种错误呢?没法区分啊。

感觉自己很迷茫

好想抽时间看看大神的代码,但是从仅公司到现在,差不多半年了吧。。天天加班到两三点。。。根本没时间啊,计划年假看 hackpai 的源码,希望能够学到很多的解决方式帮助自己解决很多的问题。希望大佬们也能分享一些看源码的建议,真的有点迷茫。

再次谢谢大家了

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8207 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 147 关注
  • 编程技巧
    2 引用 • 28 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    140 引用 • 441 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • wuhongxu
    作者

    哦哦,嗦嘎,其实我一直有这个的 pdf,但是我一直觉得看 pdf 有点看不进去,想要实体书,但是又穷,不知道买哪本 QAQ,代码大全我收下了,哈哈

  • 其他回帖
  • Eddie

    1 前端显示啥,文案是啥?你这干后端的艹什么心,你又不需要编写前端的代码。
    2 到达 control 的数据越真实越好。。
    3 这个没有啥的,有空就自定义的处理,没有就写个全局的吧

    2 回复
  • 88250

    具体情况具体分析:

    1. 文案这个可以搞个配置文件,key 上面加状态码
    2. Service 层主要是进行事务封装,一个 service 方法要做到对于一个完整业务事务以保证一致性。
    3. 异常和返回码是两种编程范式,我一般是混用,Java 中大部分用异常,golang 用返回码。文案的问题最好也在 service 里面解决。

    设计方面保持 MVC 风格就行,不用纠结,赶紧实现业务才是正经的 😅

    PS 是 hacpai,不是 hackpai

    3 回复
  • wuhongxu
    作者

    我目前是这样,在 service 中使用的抛异常的方式,但是我目前还是在 service 中处理很多的逻辑,因为有这样的问题,我想要尽量使用一次操作只用一个 sql 去完成,特别是查询,这样的代码结构就是 controller 只需要调用 service,service 完成默认操作调用一下 mapper(也就是 dao),然后 dao 中完成数据库操作。刚开始还可以,但是很多时候的业务逻辑并不能简单的一个 sql 就完成,需要联合其他的 service,然后就出现了代码结构混乱的问题

  • 查看全部回帖