Java高级编程-React 项目的架构和规范

简介:   架构和规范架构是为了解决什么问题呢?我理解是效率问题。通过一个好的架构,能让你很容易地、具备一致性地理解一个系统,在此基础上快速地、可持续地完成业务功能。

 

 

架构和规范

架构是为了解决什么问题呢?我理解是效率问题。通过一个好的架构,能让你很容易地、具备一致性地理解一个系统,在此基础上快速地、可持续地完成业务功能。它保证的有三点:

  • 代码库阅读起来很轻松
  • 添加新功能时能很快,理想情况是,仅添加跟业务有关的代码,跟样式、基础设施相关的东西,在一个较为成熟的项目上,应该都比较稳定了
  • 在演进过程中,仍然能保持添加功能的速度很快

规范是为了解决什么问题呢?我理解是协作问题。大家一个团队工作,命名习惯不同,代码风格不同,水平参差不同,如何保证整体质量和风格面貌?靠规范呗。

那么架构和规范分别有什么例子呢?

架构

比如目录结构、组件层次、状态管理、副作用管理、路由系统、UX 系统(样式方案)、埋点设计、测试策略、持续集成、构建方式、部署方式等属此列。可以看到,为了开发一个业务功能,底下可能需要这么多基础设施支撑。而架构的目的,就是把尽可能的操作(比如路由、埋点、UX 一致性等)变成常量级别的操作、甚至默认标配的操作,这样才能让你开发起来顺畅,做到只关心业务的部分。

  • 目录结构:这个问题与组件层次问题息息相关。在 APP 的场景下,它与 web 又不太一样,APP 往往是首页路由+卡片式堆叠页面。怎么将页面结构映射到目录结构上,怎么保持清晰?是遵循 duck 目录结构设计方式,还是功能式目录结构方式?如果小型项目选择从功能式开始,后续是否有向 duck 结构的迁移路径?需要多少人力?
  • 组件层次:是按照 container component -> presentation component 的结构划分?还是不 care?
  • 状态管理:React Context、mobx、redux,如何选择?
  • 副作用管理:promise 方案?thunk 方案?saga 方案?
  • 类型系统:TS。语言层级的类型系统所带来的架构抽象能力
  • 路由系统:怎么做到让页面增删变成常量级别的操作?怎么支持多种不同的渲染模式(不卸载/卸载)?
  • UX 系统:怎么做到跟 UX 设计保持高度一致?怎么保证只需要常数级别的操作就可以达到这种一致性?如何保证只需要常数级别的操作就可以变更、尝试新的 UX 设计?
  • 埋点设计:数据乃产品之本,怎么设计埋点系统,让它对业务代码的侵入性达到最小?怎么保持细粒度埋点的灵活性?如何做到让埋点变成常量级别的操作?埋点数据结构如何设计?统计如何统计?要生成什么报表?报表的生成如何做到常量级别的操作(即不需要人工执行脚本去统计)?
  • 测试策略:测哪些?测什么?测多细?由谁测?需要制定可落地的测试策略
  • 持续集成:开发方式(分支 or 主干)?自动化测试分别在什么阶段运行?如何让持续集成的配置变成常数级别(而不需要每次换机器都要手动重新搭 CI)?
  • 构建方式:用什么工具进行自动化构建?
  • 持续部署:部署目的地?部署频率?是否能做到每次提交都进行部署?是否能准备与生产环境尽可能接近的 UAT 环境?

规范

比如代码风格、编程风格、命名风格、提交信息、提交粒度、开发习惯、代码整洁程度、单元测试好坏等属此列。

  • 代码风格:Prettier 一键解决
  • 编程风格:Eslint 尽量覆盖
  • 命名风格:明确基本原则后,写入 README 做宪法 + 术语表
  • 提交信息:precommit hook,但没法规范到信息级别,而提交信息是跟提交粒度息息相关的
  • 提交粒度:较难以统一的部分。我还是把它放到架构部分去吧
  • 开发习惯:自暴自弃的部分。比如 TDD 等
  • 代码整洁程度:基本只能用 code review + PR 来规范。这跟开发者是谋生心态还是工匠心态有关,跟组织是技术属性的组织还是政治属性的组织也有关系
  • 单元测试好坏:明确好测试的标准后,制定测试策略 + 写入 README 做宪法 + code review 经常反馈

其他的欢迎补充。

 

如果对小编所发感兴趣,欢迎关注小编,小编持续更新。

 

架构和规范

架构是为了解决什么问题呢?我理解是效率问题。通过一个好的架构,能让你很容易地、具备一致性地理解一个系统,在此基础上快速地、可持续地完成业务功能。它保证的有三点:

  • 代码库阅读起来很轻松
  • 添加新功能时能很快,理想情况是,仅添加跟业务有关的代码,跟样式、基础设施相关的东西,在一个较为成熟的项目上,应该都比较稳定了
  • 在演进过程中,仍然能保持添加功能的速度很快

规范是为了解决什么问题呢?我理解是协作问题。大家一个团队工作,命名习惯不同,代码风格不同,水平参差不同,如何保证整体质量和风格面貌?靠规范呗。

那么架构和规范分别有什么例子呢?

架构

比如目录结构、组件层次、状态管理、副作用管理、路由系统、UX 系统(样式方案)、埋点设计、测试策略、持续集成、构建方式、部署方式等属此列。可以看到,为了开发一个业务功能,底下可能需要这么多基础设施支撑。而架构的目的,就是把尽可能的操作(比如路由、埋点、UX 一致性等)变成常量级别的操作、甚至默认标配的操作,这样才能让你开发起来顺畅,做到只关心业务的部分。

  • 目录结构:这个问题与组件层次问题息息相关。在 APP 的场景下,它与 web 又不太一样,APP 往往是首页路由+卡片式堆叠页面。怎么将页面结构映射到目录结构上,怎么保持清晰?是遵循 duck 目录结构设计方式,还是功能式目录结构方式?如果小型项目选择从功能式开始,后续是否有向 duck 结构的迁移路径?需要多少人力?
  • 组件层次:是按照 container component -> presentation component 的结构划分?还是不 care?
  • 状态管理:React Context、mobx、redux,如何选择?
  • 副作用管理:promise 方案?thunk 方案?saga 方案?
  • 类型系统:TS。语言层级的类型系统所带来的架构抽象能力
  • 路由系统:怎么做到让页面增删变成常量级别的操作?怎么支持多种不同的渲染模式(不卸载/卸载)?
  • UX 系统:怎么做到跟 UX 设计保持高度一致?怎么保证只需要常数级别的操作就可以达到这种一致性?如何保证只需要常数级别的操作就可以变更、尝试新的 UX 设计?
  • 埋点设计:数据乃产品之本,怎么设计埋点系统,让它对业务代码的侵入性达到最小?怎么保持细粒度埋点的灵活性?如何做到让埋点变成常量级别的操作?埋点数据结构如何设计?统计如何统计?要生成什么报表?报表的生成如何做到常量级别的操作(即不需要人工执行脚本去统计)?
  • 测试策略:测哪些?测什么?测多细?由谁测?需要制定可落地的测试策略
  • 持续集成:开发方式(分支 or 主干)?自动化测试分别在什么阶段运行?如何让持续集成的配置变成常数级别(而不需要每次换机器都要手动重新搭 CI)?
  • 构建方式:用什么工具进行自动化构建?
  • 持续部署:部署目的地?部署频率?是否能做到每次提交都进行部署?是否能准备与生产环境尽可能接近的 UAT 环境?

规范

比如代码风格、编程风格、命名风格、提交信息、提交粒度、开发习惯、代码整洁程度、单元测试好坏等属此列。

  • 代码风格:Prettier 一键解决
  • 编程风格:Eslint 尽量覆盖
  • 命名风格:明确基本原则后,写入 README 做宪法 + 术语表
  • 提交信息:precommit hook,但没法规范到信息级别,而提交信息是跟提交粒度息息相关的
  • 提交粒度:较难以统一的部分。我还是把它放到架构部分去吧
  • 开发习惯:自暴自弃的部分。比如 TDD 等
  • 代码整洁程度:基本只能用 code review + PR 来规范。这跟开发者是谋生心态还是工匠心态有关,跟组织是技术属性的组织还是政治属性的组织也有关系
  • 单元测试好坏:明确好测试的标准后,制定测试策略 + 写入 README 做宪法 + code review 经常反馈

其他的欢迎补充。

欢迎工作一到五年的Java工程师朋友们加入Java架构开发:468947140

点击链接加入群聊【Java-BATJ企业级资深架构】:https://jq.qq.com/?_wv=1027&k=5zMN6JB

本群提供免费的学习指导 架构资料 以及免费的解答

不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导

 

如果对小编所发感兴趣,欢迎关注小编,小编持续更新。
相关文章
|
2月前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
39 3
|
4天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
2月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
210 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
2月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
66 6
|
2月前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
2月前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
174 10
|
3月前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
57 2
|
3月前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
6天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
45 17
|
17天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者