좋은 코드, 나쁜 코드
메모
소개
몇 에피소드 전에 저는 좋은 코드의 개념에 대해 이야기했습니다. 좋은 코드의 4가지 특징을 설명했습니다. 그런 다음 에피소드 4에서 코드의 가독성을 향상시킬 수 있는 몇 가지 간단한 기술을 보여주었습니다. 오늘 다시 좋은 코드에 대해 이야기하고 잘 설계된 코드의 몇 가지 특성에 초점을 맞출 것입니다. 각 특성에 대해 몇 가지 예를 보여주고 해당 코드를 개선하는 방법을 설명하겠습니다.
솔직한
class User
def self.find(id)
user = @users.detect { |user| user.id == id }
return user || self.new()
end
end
class User
def self.find(id)
return @users.detect { |user| user.id == id }
end
end
User.find(id) || User.new()
class User
def self.find_or_new(id)
user = @users.detect { |user| user.id == id }
return user || self.new()
end
end
class Http {
public static function get(url, filter = null) {
return fetch(url)
.then((resp) => resp.json())
.then((json) => filter ? filter(json) : json);
}
}
class Http {
public static function get(url, filter = null) {
return fetch(url)
.then((resp) => resp.json())
}
}
Http.get("<http://someurl.com>").then((json) => filterData(json));
class Http {
public static function getAndFilter(url, filter = null) {
return fetch(url)
.then((resp) => resp.json())
.then((json) => filter ? filter(json) : json);
}
}
class User {
public allUsers;
public static function create(email, password) {
return User.allUsers[0];
}
}
간결한
<?php
function totalPrice($order)
{
$items = $order->items;
$items = new Collection($items);
$prices = $items->map(function($item) { return $item->price * $item->count });
$totalPrice = $prices->reduce(function($total, $price) {
return $total + $price;
}, 0);
return $totalPrice;
}
<?php
function totalPrice($order)
{
return (new Collection($order->items))
->map(function($item) { return $item->price * $item->count })
->reduce(function($total, $price) { return $total + $price; }, 0);
}
<?php
function totalPrice($order)
{
return (new Collection($order->items))
->reduce(function($total, $item) {
return $total + ($item->price * $item->count)
}, 0);
}
눈에 거슬리지 않는
class UserController {
public handleRequest(request: Request): View {
return User.handle(request);
}
}
class User {
public static handle(request: Request): View {
if (request.method === "POST") {
user = User.create(request.parameters);
return new View("createUser", user);
} else {
user = User.find(request.query["id"]);
return new View("showUser", user);
}
}
public static create(parameters: any) {
// TODO
}
public static find(id: number) {
// TODO
}
}
class UserController {
public handleRequest(request: Request): View {
if (request.method === "POST") {
return this.handlePostRequest(request);
} else {
return this.handleGetRequest(reqeust);
}
}
private handleGetRequest(request: Request): View {
user = User.find(request.query["id"]);
return new View("showUser", user);
}
private handlePostRequest(request: Request): View {
user = User.create(this.filteredParameters(request.parameters));
return new View("createUser", user);
}
private filterRequestParameters(parameters: any) {
// TODO
}
}
class User {
public static create(parameters: any) {
// TODO
}
public static find(id: number) {
// TODO
}
}
일관된
class User
def self.find(id = nil)
return @users.find { |user| user.id == id }
end
end
class Product
def self.find(id: nil)
product = @products.find { |p| p.id == id }
raise NotFoundException unless product
return product
end
end
user = User.find(10) # will return User object or nil
product = Product.find(id: 20) # will return Product object or raise an error
class User
def self.find(id = nil)
return @users.find { |user| user.id == id }
end
end
class Product
def self.find(id = nil)
return @products.find { |p| p.id == id }
end
end
user = User.find(10) # will return User object or nil
product = Product.find(20) # will return Product object or nil
스스로에게 물어보세요: 이 코드는 수정하기 쉬운가요?
Reference
이 문제에 관하여(좋은 코드, 나쁜 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gregorywitek/good-code-bad-code-1omb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)