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

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

想请教各位大佬自己在做项目过程中的很多问题。
自己以前在大学学 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 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Spring

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

    944 引用 • 1459 回帖 • 17 关注
  • 编程技巧
    2 引用 • 28 回帖
  • 架构

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

    142 引用 • 442 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • Eddie

    Patterns of Enterprise Application Architecture 我觉得这本书是神作
    如果你真想做有个高大上的系统的话,其实你可以了解一下 领域模型驱动设计
    但是我觉得只要做好 mvc 就差不多了。因为时间一般都是很紧的。
    1:我其实的话会返回状态码,而且都会送有结果描述,但是一般前端都会根据自己的情况修改他显示给用户的信息。
    2:如果在 contr 里面填充默认数据的话是否就影响了业务逻辑的判断??假如很多的 contr 都用到了这一类型的数据,那你岂不是每个都要填充默认数据一次??而去填充默认数据的话是跟数据库的字段的是否非空联系起来的。越靠近数据读写的方法越好。。。
    3:还是搞个同一异常处理吧。

    1 回复
  • 其他回帖
  • Eddie

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

    2 回复
  • yangyujiao

    感觉你现在做的,就跟我刚进入的一个项目功能差不多。

    1. 我一般直接返回状态码,前端去显示文字。
    2. 一般的逻辑都是在 ctrl 处理的,service 主要就是数据库方面的,因为涉及到事务。
    3. 我们用 throws 比较多,写了一个共同的异常处理。

    我们用的就是 spring-boot 前端用的啥我不太清楚。反正是前后端分离的,我做服务端了。
    我工作都好几年了,你的这些迷茫我也会有,但是主要框架一般不是我搭,然后别人搭好了,我就用,所以很多问题,不需要我去处理。

    2 回复
  • 88250

    具体情况具体分析:

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

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

    PS 是 hacpai,不是 hackpai

    3 回复
  • 查看全部回帖