20 | 简单和直观,是永恒的解决方案
该思维导图由 AI 生成,仅供参考
为什么需要简单直观?
- 深入了解
- 翻译
- 解释
- 总结
在软件开发中,简单直观的解决方案被认为是快速行动的唯一途径。选择最简单、最直观的做法至关重要,因为简洁的代码能够提高工程进展速度和质量。此外,简单直观的解决方案减轻了沟通成本,降低了用户的学习压力,有助于传达产品的核心价值,吸引更广泛的用户。遵循简单直观的原则可以帮助开发人员缓解许多软件问题。如何做到简单直观呢?首先,做小事,做简单的事情。代码的块要小,每个代码块都要简单直接、逻辑清晰。其次,遵守约定的惯例,代码块要容易组装,接口规范要清晰。花时间做设计,识别出小部件,是一个很花时间的事情,但如果拆解和验证做得好,代码的逻辑就会很清晰,层次会很清楚,缺陷也少。最后,借助有效的工具,如思维导图、时序图和问题清单,可以帮助记录状态、追踪进度。选择最简单、最直观的解决方案,将复杂的问题拆解成简单的问题,能够化繁为简,保持代码的整洁和思路的清晰。
《代码精进之路》,新⼈⾸单¥59
全部留言(16)
- 最新
- 精选
- 唐名之1:首先会校验用户名,可能是为了检测当前用户登录环境是否安全; 2:通过先检测登录环境是否安全会减少密码泄露风险; 3:从接口设计,第一步用户检测服务端接口应该会返回检测成功与否标识和唯一的会话 标识,客户端待用户输入密码,会将 用户名 密码 会话唯一标识 提交到服务端,服务端会将三者一起作为校验;
作者回复: 安全是这个流程改进最大的好处之一。
2019-02-1815 - IamNigel文中的问题想到一点,可以防止撞库式的外部冲击对最底层的用户名密码验证模块产生直接冲击,如果100次尝试,第一道就拦掉了90次就产生了直接受益,这种时候还可以在第一道拦截用户名校验处对这种ip进行黑名单处理
作者回复: 我一直想在留言区看到有人讨论这个方案的安全改进。 谢谢你分享了这个想法!
2019-03-0510 - 空知想问下怎么通过用户名检测登录环境是否安全的?
作者回复: 确实有空间来检测登陆环境。比如说,通过检查该用户名是否正在使用常用的设备,来决定是否启用更多的校验,比如验证码、检查是否人工操作等。
2019-02-185 - hua168像京东架构那样,他们最小单位是模块,基础模块的话,很多模块都会调用,以垂直划分的话,这类模块放在最下面,比如数据库模块,有一说法“基础模块下沉”…… 几个最基础的模块又组成一个大一点的基础模块,放在中间位置… 最顶的是复用最少的,但由中间层的几个基础模块组成…… 一句话:复用越多的模块越放下面,复用越多越是基础模块……那不是“基础模块下沉,独立模块上升”?
作者回复: 看起来像是说依赖关系,上层依赖下一层,复用模块不依赖上一层的,可以考虑放到下层的模块,这样复用更方便更多。
2019-02-204 - Junix文中的问题: 1、先检验用户名是否存在,其一会让输错的用户省去输入密码的时间,尤其是密码复杂的。其二可以帮用户定位出错位置,用户名错误或密码错误。输入用户名后,输入密码前这段时间里用户能直接了当的看到用户名是否错误。输入密码后再报错,就能知道是密码错误,直接帮用户进行了校验,定位了出错的位置。带来的收益就是直观和简洁,与第一种方式相比,在输错用户名的前提下,避免了无效操作。 2、前后端代码结构,肯定是采用Ajax,当输入框监听到失去焦点,前端就立即将输入内容发送到后端进行验证,后端检验后将结果返给前端,当用户名不存在的时候前端可以在输入框下用醒目颜色提示。
作者回复: 定位错误是其中的收益之一。如果1/10的用户输入用户名错误,你可以简单估算、揣摩一下实现得当的服务器的性能提升比例以及用户的体验提升程度。 现在的界面,也有的不显示密码输入框,直到用户名校验通过,才显示密码输入框。 也有的使用两个页面,第一个页面用户名,第二个页面密码。
2019-02-184 - 苦行僧只有持续不断的重构review才能将代码改进到最好,很多写代码的完成业务功能就完事,具有精益思维是简单的前提
作者回复: 你说的精益思维是持续改进的意思吗?我比较倾向于一开始就选择简单的方案,最核心的需求,然后再把这些简单的东西做好,持续改进。
2019-02-192 - hua168一个项目有n多的代码,一个代码块只做一件事情的话,那么很多重复用的代码,是不是可以变成基础模块? 我看到有人说“基础模块下沉,方便复用”,那在中间层和上层的模块呢?有什么原则之类吗?
作者回复: 每一层的代码,都要考虑复用。也许,“下沉”说的是复用代码剥离出来,当作通用的类库?我不太了解这个说法。
2019-02-191 - aguan(^・ェ・^)重新阅读了一遍文章,发现设计成两个接口的还有一个好处是接口细分了更容易复用,比如修改密码的时候可以复用登录时密码检验的接口
作者回复: 嗯,这也是一个优点。
2019-02-191 - aguan(^・ェ・^)除了用户体验和安全性的好处,想不到还有哪些性能上的提升了。分不分两个接口,总的处理逻辑都是不变的,挺想知道对性能上有哪些提升,求大神们指点一二。
作者回复: 分不分两个接口,总体逻辑可以不变,也可以改变。性能提升不太容易想的到,理一理客户端和服务端的代码的什么样,想一想可以怎么变化,意外情况怎么处理。
2019-02-181 - KEEP最近刚换工作,第一次接需求,需要在已有的代码上做修改。这块代码历经不同人员的维护,参杂了许多需求。很多逻辑参杂在了一起,已经很复杂了。在开始动手之前,我先花时间理清代码处理的逻辑,搞明白了为什么。和他人讨论了如何梳理流程,先把代码按清晰的流程改造好,再往里面添加新的需求。在项目没有很紧急的情况下,作为新人,我觉得花这些时间把流程梳理清晰,做一下设计,把代码先改的简单清晰,还是很值得的。然后再在上面添加新需求,可以减少错误发生的概率。 当然,做了设计还需要多跟老同事讨论,防止遗漏。除此之外,代码编写规范,主动邀请他人对代码进行检视(之前他们没这方面的要求),写好文档存底,认真测试。我觉得这样才过得去。
作者回复: 都是好习惯!
2019-12-08