上周我突然意识到,我在grafana
上写的 sql 语句存在多处硬编码
。这篇笔记将记录如何实现没有硬编码的sql语句,以及自学编程过程中如何应对自己的笨拙代码和难题不断的状况。
1、有效但粗笨的硬编码
所谓硬编码
,大意是指代码中出现很多具体的取值,每个取值都是手动赋值的。比如:
-- 达成某个成就的用户数
select
count(user_id) as 用户数
from
achivement_table
where
achivement_name= '牛刀小试'
以我家产品 xue.cn 的成就系统为例,我们首个版本仅有10个成就,我要拷贝粘贴修改成就名称达10次。最近成就升级到V2版本,有17个成就,未来还会有更多成就。再比如习题和章节,每本书的章节数和习题数,都是几十个起。至于统计每本书的阅读用户数,每个章节的留言数,每个成就的达成用户数……这类实现太频繁了。
如果全部采用硬编码,我意识到这将低效粗笨。
在初学编程时,你我总会写出一些低效但生效的代码。随着编程水平提升或需求变得复杂,我们将有机会迭代自己的代码。迭代是好事,但这不意味着之前的低效但有效的代码是坏事。——**接纳自己早期的笨拙,并追求持续的进步。咱们不需要为自己初学阶段的代码感到不好意思或羞愧,而是要视之为提升的机会。**这个心态令我在自学编程的路上几乎无所畏惧。