唉,写程序还是得灵活点啊!
大家好,我是鱼皮,封面是头发最茂密的时期。
想要写出好程序、更快更好地完成项目,不仅需要掌握基本的开发技能,更重要的则是强大的业务思考能力。
有的时候,根据实际需求设计并选择一个更合适的实现方案,就有可能大幅减少实际写代码的时间、减少项目的开发和维护成本。
今天给大家分享一个我们公司开发团队的小故事,都是真实的业务场景和思考过程,希望能给大家一些启发。
事情是这样的,最近这段时间,我们公司研发了一个新的在线写简历产品 —— 老鱼简历(https://laoyujianli.com/),已经开放内测有一段时间了。但由于我担心项目存在一些 Bug、还没有做到最好,所以一直没有正式上线推广,近期也在持续不断地收集用户的反馈进行优化。
今天打开产品时,我发现有一些简历模板的样式还不够精致,于是就让前端同学优化样式:
但很快,前端同学就发现了问题。我们有很多不同岗位的官方简历模板(比如 Java 后端校招、前端实习等),这些模板都是基于同一套精简的父模板 A 的样式创建的,只不过里面的具体内容不同而已。那现在如果优化了简历模板 A 的样式,所有这些基于模板 A 的岗位模板的样式,又该怎么修改呢?
难道是根据简历模板 A 修改的样式,一个个打开不同岗位的简历模板手动修改样式么?
数量少的话还可以,但是这样做也太麻烦了,不是很程序员。
一位优秀的程序员,应该学会 “偷懒”。
我的建议是,开发一个能够同步模板样式的功能,可以在父模板修改后,自动更新所有子模板的样式,保持和父模版一致。
为了实现这个功能,需要以下几个步骤:
将每份简历的样式和内容作为 2 个字段独立保存,从而实现自由替换简历的样式而不影响内容 基于模板创建简历时,记录当前简历使用的父模版,才能拿到父模版的样式 开发一个手动触发的任务,可以自动同步父模版和子模板的样式
前端同学表示:听起来并不难,那我这就去做了~
我:先别急,想想会不会有其他的问题?
这是很多初入职场的开发者的 “通病”,听到别人给了一个实现方案就立刻去写代码了,不去考虑这个方案是不是最合理的、以及还有没有其他潜在的问题和风险。
我:如果父模版 A 的行间距默认为 24,有一个官方 Java 岗位简历模板基于 A 创建,但由于内容比较多,行间距 24 时会占用 2 页,所以你手动把行距减少到 12 使得简历保持一页纸。那么如果执行了样式的同步,这份 Java 岗位简历模板的页数不就又回到 2 页了么?也就是说,同步样式后,会不会导致一部分模板受到不确定的影响?
前端同学:确实。那我们就不同步样式了?手动改完了呗?
我:其实还有一种方法,可以大幅节省成本。那就是我们所有的官方模板遵循统一的创建规范,尽量保证所有基于同一个父模版的简历模板的内容篇幅是相近的(比如都是一页纸),尽可能消除模板样式改动带来的简历页数变化。
前端同学:懂了,就是通过规范来减少后期可能的变动?
我:没错,我们在开发系统时,不能只考虑眼下的方便,也要在合理的前提下适当给系统增加一些扩展性。比如这次遇到的场景:如果后面父模版的简历样式再修改了,子模板也基本不会受到影响。
除了上面这个例子外,我们在实现 简历助手
功能时,也采用了类似的设计思想。
我们选择给每一个精选例句和简历建议打上 多个 标签,而不是采用单一的分类,用于后续支持多标签检索:
标签化设计也是现在内容网站的主流分类方法,能够更灵活地组织、管理和搜索数据,建议大家学习下。
OK,就先分享到这里,最近肠胃不是很好,熬不得夜了,大家也要注意身体啊!
👇🏻 点击下方阅读原文,获取鱼皮往期编程干货
往期推荐