基础框架uif
易用性
评估一个框架的易用性通常涉及多个方面和步骤,下面是一些关键点
文档质量
框架是否有详尽、清晰且最新的官方文档,包括快速入门指南、API参考手册以及示例代码。 文档是否容易搜索,结构是否合理,语言表达是否简洁明了。
现状
- uif前后端无详尽、最新的官方文档
- 无入门指南
- 无API参考手册、示例代码
学习曲线
新用户能否在短时间内理解并开始使用框架的基本功能。 是否提供了教程或逐步引导来帮助新用户快速上手。
现状
- 基础框架的学习成本很高、无固定文档,导致很多问题需要口述跟长时间积累
- 无教程或者指引
设计一致性
框架的设计原则和模式是否一致,避免用户需要不断适应新的编程模型或接口风格。 API命名规则、错误处理机制、配置文件格式等是否统一。
现状
- 基础框架的接口设计与公司一致,构建方法与vue、webpack等通用构建存在差异
- 命名规则无
- 错误处理机制无
- 配置文件格式统一
灵活性
是否支持自定义扩展,允许开发者根据项目需求调整框架行为。
现状
- 目前项目上无法对框架进行任何修改
- 框架层面的扩展需要框架库代码支撑与发布
工具链集成
框架是否易于与其他开发工具、IDE、构建系统及版本控制系统集成。
现状
- 框架目前建议使用vscode开发,但未支撑插件配置
- 构建系统大部分项目走的是本地打包,ftp手动上传到服务器
- 版本控制以开发者手动git管理,最后交由运控中心统管
支持与反馈
框架背后是否有独立团队支撑,问题解答,问题反馈管理等。 框架是否存在配套的插件库或组件,可降低开发成本。
现状
- 框架目前的迭代由
架构师张晶
做支撑 - 问题反馈、解答没有统一的管理渠道、目前整个研发部会从微信、钉钉、小道园子等渠道接受问题再移交给
架构师
做问题排查与处理 - 架构目前存在工具库、mti-ui组件库,组件库可单独使用,工具库是集成在框架内,尚未对外开放
实例与案例研究
查看已有的项目案例,了解实际应用中的表现以及开发者的真实反馈。 分析开源项目的源码,检验其内部架构的合理性与可维护性。
现状
- 目前框架在很多项目上都在用、实际上也有很多的反馈、但目前都没有归档跟汇总
- 框架内部代码的迭代是在
张晶
一个人控制,没有对架构的合理性、可维护性等做检验
性能测试与基准
虽然易用性和性能不是同一概念,但高性能往往能提升整体的使用体验。
现状
- 缺少性能测试规范,没有统一的性能测试标准与流程,大部分都是开发者本地电脑手动点点
- 缺少性能基准条例,
- 框架内部代码的迭代是在
张晶
一个人控制,没有对架构的合理性、可维护性等做检验
用户体验
如果是用户界面相关的框架,评估其界面布局、交互设计、响应速度等方面是否符合人体工程学和认知习惯。
现状
- 目前由交互设计部主导
易调试性
当出现错误时,框架是否提供有用的错误信息和日志记录,以及方便的调试工具和手段。 通过以上这些维度的考察,可以较为全面地评估一个框架的易用性。实际操作时,可能还需要结合具体的使用场景和团队技术水平进行针对性测试。
现状
- 目前框架层面的调试还是基于
vue-tools
和chrome-tools
部署
安装与配置
框架是否提供一键安装脚本或者便捷的包管理器支持(如npm、pip、Composer等)。配置过程是否简洁明了,是否有清晰详细的配置文档,并且对必须和可选配置项有明确说明。
依赖兼容性
检查框架对操作系统、服务器环境、编程语言版本、数据库以及其他第三方库的依赖要求是否明确,以及这些依赖是否容易获取和安装。
自动化工具支持
是否支持使用Docker等容器技术进行部署,使得在不同环境下的部署变得一致且易于迁移。是否有现成的CI/CD集成方案,比如与Jenkins、Travis CI、GitHub Actions等持续集成/持续部署工具的对接。
扩展性和弹性伸缩
在集群环境下,该框架是否能方便地进行横向扩展,如是否支持负载均衡、服务发现等功能。当需要增加或减少资源时,能否平滑地进行水平扩展或收缩。
更新与升级
新版本的升级过程是否简单,是否有可能导致服务中断,以及是否有详尽的升级指南。
错误处理与回滚
部署过程中出现错误时,是否有完善的错误提示及解决方案,以及在部署失败后能否快速回滚到之前稳定的状态。
日志与监控
框架是否内置或提供了良好的日志记录和分析功能,以便于排查部署问题。 是否支持集成主流的监控系统,便于实时了解部署后的运行状态。
错误处理机制
错误提示与文档
当代码出错时,框架是否能够提供清晰、准确且有意义的错误信息和堆栈跟踪。 错误信息是否易于理解,是否指向问题的具体位置以及可能的原因。 框架是否有详尽的错误码或异常类型列表,并在官方文档中对这些错误进行了解释。
日志系统
框架是否内置了强大的日志记录功能,允许开发者灵活配置日志级别(如DEBUG、INFO、WARN、ERROR等)以捕捉不同级别的调试信息。 日志输出是否结构化且便于搜索分析,是否支持对接第三方日志分析工具。
调试工具支持
框架是否提供了集成的或兼容的标准调试工具,例如IDE内的断点调试、远程调试能力等。 是否有API或接口可以方便地插入调试钩子,以便于实时监控和介入程序执行流程。
测试框架
是否有一个内建或推荐的单元测试、集成测试或端到端测试框架,可以帮助开发者编写测试用例来定位和修复问题。 测试框架是否能够提供详细的测试报告,包括失败原因和相关代码位置。
性能分析与跟踪
框架是否提供性能分析工具或者容易与其他性能分析工具结合,帮助开发者找出潜在的瓶颈或资源消耗过大的地方。
社区与资源
社区活跃度如何,是否有很多针对常见问题和错误排查的解决方案、示例代码及教程。 开发者是否能够快速从社区获取帮助,减少自行摸索的时间成本。
功能性
功能完备性
框架是否覆盖了所需领域的主要功能。例如,对于Web开发框架,应检查它是否支持路由管理、模板渲染、数据库操作、认证与授权等功能。 核心功能模块是否完善且成熟,如对于微服务框架,要考虑其对服务注册发现、负载均衡、熔断限流等机制的支持。
API与接口设计
API文档是否详尽、规范,包括函数、类和方法的参数、返回值及异常处理信息。 接口设计是否合理,易于理解和使用,遵循良好的设计原则,比如低耦合、高内聚、单一职责等。
扩展性
框架是否提供了足够的扩展点以适应未来需求变化或定制化需求。 是否支持插件系统,使得开发者可以方便地添加新的功能或替换现有功能模块。
兼容性和集成性
框架能否与其他主流技术栈良好兼容,例如不同的数据库、缓存系统、消息队列等。 是否容易集成第三方库和服务,比如是否有现成的适配器或中间件来连接其他服务。
最佳实践和案例
查看该框架是否有丰富的实例代码和项目案例,这些案例能够展示框架在实际应用中的表现和适用场景。 是否有推荐的架构模式和编码规范,以及这些模式和规范如何帮助实现高质量的应用程序。
社区支持与更新频率
社区活跃度如何,是否有大量的教程、博客、论坛讨论和GitHub issue解决记录,这间接反映了框架功能的丰富程度和实用性。 框架版本迭代是否频繁,新功能是否及时跟进,bug修复是否快速,这也体现了框架功能性方面的生命力。