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

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

想请教各位大佬自己在做项目过程中的很多问题。
自己以前在大学学 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
    作者

    动漫宅,见谅见谅,哈哈

  • 其他回帖
  • yourShitCode

    这个问题本身没有答案 实现需求才是领导看中的能力 . 想要快速提高 建议做个有人盯着的项目 比如说一个人撸一个商城系统出来. 然后在过程中不断的学习你觉得牛逼的技术 并应用到其上 然后就一直滚雪球吧

    1 回复
  • Eddie

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

    1 回复
  • meikaiyipian

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

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

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

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

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

    1 回复
  • 查看全部回帖