开发的时候的保留项、冗余的成本

在开发过程中,预留未来功能扩展虽然旨在减少重构成本,但也会带来额外开销。个人开发者尤其需要权衡,因为冗余代码可能导致长期维护困扰。正确判断功能上线时间,避免因保留未使用的代码而造成资源浪费。及时调整架构,保持产品的简洁性,对于小产品尤为重要。

老板说,这个功能我们现在不开发,但是你要留好未来拓展的选项,方便到时候直接拓展,减少开发和重构的成本。

这个时候,涉及到取舍问题,主要需要考虑的是,老板说的这个功能,到底什么时候能真的上。

在现有的基础上为未来可能的功能考虑,是有成本的。架构都可能不一样,开发人员的因此增加工时加起来可能也不少。

一开始架构时,确实要考虑到后期增加功能的可能性,但在架构上,现在是否要以此做设计,就需要综合判断。

主要是判断成本,判断这个功能,实际上大概什么时候能上。

这个什么时候能上,不能以老板说的为准,我见过老板说2个月要上的,所以代码里一直保留着迁移过来的部分代码,最后因为各种老问题、新问题、新需求、新计划,结果2年了,也没有上,最后重构的时候,直接砍掉。

如果是作为个人开发者,自己做小产品,那就更要避免这种情况。

小产品,关键是要小,不要在做小东西的时候,给自己太多的冗余处理的逻辑。

我的经验是,一般我说现在这个功能做成这样,但是我后面还要增加什么什么,这个功能真的加上,有时候都是一年之后了,保留字段的含义、业务逻辑都已经忘得差不多了。

有时候我想,我写好文档,写好注释,就可以避免这个问题。但实际上,我以为我下周就会增加的功能,压根不会写文档写注释,即使写了,能否详细到一年后自己还能看懂?

我举一个简单的例子,我之前做了一个优惠码的逻辑,在数据库有1个关于时间的字段,过期时间,前端也是按照这个逻辑做的。

后来我觉得还应该加上,开始显示的时间和结束显示的时间,所以在数据库又加了这两个字段。

仅仅这一个操作,导致我每次需要做优惠活动的时候,我都要去检查前端代码,看我自己是否使用了这两个字段来做判

### 数据库设计中考虑冗余的场景 在某些情况下,在数据库设计中引入冗余字段能够提升性能并简化应用逻辑。当频繁访问的数据可以通过增加少量冗余而显著减少复杂查询的需求时,这样的做法是有意义的[^1]。 #### 性能优化需求 对于那些读操作远多于写操作的应用程序来说,适当加入冗余字段可以帮助降低复杂的JOIN操作频率,从而加快查询速度。例如,在电子商务平台的商品详情页面展示商品价格的同时也显示库存状态,如果每次都需要跨多个表联结获取这些信息,则会消耗较多资源;此时可以在商品基本信息表内添加一个表示当前是否有货的状态位作为冗余字段。 ```sql ALTER TABLE products ADD COLUMN stock_status BOOLEAN; UPDATE products SET stock_status = CASE WHEN inventory.quantity > 0 THEN TRUE ELSE FALSE END FROM inventory WHERE products.id = inventory.product_id; ``` #### 复杂计算结果保存 有些业务逻辑涉及大量实时计算,比如订单总额等于各单金额之和再加上运费减去优惠券折扣等。为了提高响应时间,可以直接把最终结算后的总费用存储起来成为一条记录中的固定值而不是每次都重新算一遍。 ```sql CREATE OR REPLACE FUNCTION update_order_total() RETURNS TRIGGER AS $$ BEGIN NEW.total_amount := (SELECT SUM(item_price * quantity) + shipping_fee - COALESCE(discount, 0) FROM order_items oi JOIN orders o ON oi.order_id=o.id WHERE o.id=NEW.id); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER trg_update_order_total BEFORE INSERT OR UPDATE OF item_price,quantity,shipping_fee,discount ON orders FOR EACH ROW EXECUTE PROCEDURE update_order_total(); ``` ### 数据库设计中考虑冗余的最佳实践 尽管存在上述优点,但在实际开发过程中仍需谨慎对待冗余的设计决策: - **评估成本效益**:确保所选方案确实带来了预期之外的好处,并且不会因为维护额外的一致性和同步机制而导致更高的总体开销。 - **保持适度范围内的重复度**:只保留真正有必要存在的冗余,避免过度扩展造成难以管理的局面。 - **建立有效的更新策略**:针对每一个新增加的冗余列制定清晰可靠的触发器或其他自动化手段来保证数据之间的一致性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独的普朗克1043

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值