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

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

想请教各位大佬自己在做项目过程中的很多问题。
自己以前在大学学 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 回帖 • 16 关注
  • 编程技巧
    2 引用 • 28 回帖
  • 架构

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

    142 引用 • 442 回帖

相关帖子

欢迎来到这里!

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

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

    个人认为编程不是某本书,或者某个人指点一下就能 OK 的。项目结构完全可以参考一下开源的比较好的项目的结构。你举得例子其实不是个事儿,在我们公司因为框架的原因吧,前端和后端沟通成本比较大,所以数据的哪怕在页面处理,也要后端来搞。其实这种情况开始把数据结构什么的设计好了,约定好了不是问题。你说的 Service,搞个 BaseService 实现通用的,有特殊的再扩展别的 Service 吧。特别细节的反应异常是需要成本的,做些全局的异常提示可以么。至于加班问题,是个很大的问题 😂 我也遇到了,解决不了,换工作吧

    1 回复
  • 其他回帖
  • Eddie

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

    2 回复
  • meikaiyipian

    我们 Service 中是统一返回一个 Message 封装类,里面有成功或失败 success,信息 msg,结果 result,很少用异常的方式

    处理数据设置属性之类的,基本在 service controller 都有涉及,不怎么区分,不过主要是在 service 调用其他 service,确保一个业务的完整

    编码规范什么的可以搜一下各大公司的内部规范,好像前段日子有人在论坛上发表了阿里的 JAVA 规范

    或者可以看下 官方的 demo,好像有个商店的 demo,忘了

    总之适合自己的就是好的,多写多练习吧,共勉~

    1 回复
  • wuhongxu
    作者

    哦,这种 message 好像很可取,对哈,我特么自己把自己搞昏了,我封装的 message 都能在 controller 中返回给前端用,为啥不能 service 中返回给 controller 用,不错不错,学到了,共勉~

  • 查看全部回帖