5. // Good
function f(a, b) {
if (!a) return false
if (!b) return false
return true
}
// Bad
function f(a, b) {
if (a) {
if (b) {
return true
}
}
return false
}
#1 Guard Clause Readability
6. // Good
const price = 100
function orderProduct() {
Request.send({
price
})
}
const result = orderProduct()
let shouldSendEmail = true
let sendSilently = true
let usersAreLoaded = false
// Bad
const number = 100
function submit() {
Request.send({
price: number
})
}
const r = submit()
let sendEmail = true
let sendSilent = true
let loadUsers = false
#2 表現的命名 Readability
8. // Bad
if (params['u'].split(/:/)[0] == 'admin') {
// This is admin user
}
#4 説明変数 Readability
// Good
const username = params['u'].split(/:/)[0]
if (username == 'admin') {
// This is admin user
}
16. # Bad
class Issue < ApplicationRecord
validates :title, presence: true
validates :code, presence: true
def notify_to_workers; # 通知の実装 end
end
#7 mix-in SoC
# Good
class Issue < ApplicationRecord
include Issues::Validatable
include Issues::ForWorkersNotificable
...
end
18. # Bad
class UserInviter
def add(new_user)
add_to_db(new_user)
notify(new_user)
...
end
def add_to_db; end
def notify; end
end
# Good
class UserInviter
def add(new_user)
add_to_db(new_user)
notify(new_user)
...
end
private
def add_to_db; end
def notify; end
end
#8 修飾子 SoC