现有 User类
数据库有 user 表
现有一个数据库操作类UseDao
其中function insert的写法
写法1
class userdao{
insert(userId,userName){
db.query(`insert into user (userid,username) values( ${userId},'${userName}')`)
}
}
写法2
class userdao{
insert(user){
db.query(`insert into user (userid,username) values( ${user.userId},'${user.userName}')`)
}
}
表面看面向对象似乎更先进,但是效率上却每次执行都要新建一个User对象把参数包装一下,2个字段还好,当多个字段的时候,或者遇到插入createtime值的时候,到底该取new User的当前时间还是取insert的时间呢?还有多一层类的包装,效率也低,请问高玩对这种情况怎么看?
高级语言对某种方案的取舍大部分时候大不是考虑效率。
效率自然有缓存、有分布式去解决。
考虑的首要因素是如何让代码更简单、更加可复用、可理解。
像流行的web框架,一个请求动辄加载几十个文件,这是为什么呢?就是因为上面所说的理由。
所以,我推荐第二种写法,甚至更高层的封装写法。