๐ฏ ์ค๋์ ๊ฐ์ธ ๊ณผ์ ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ณ ์ ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ์์
ํ๋ค.
์๋ฃ๋ ํ์ง๋ง ์ด TIL ์ฐ๋๊ฒ ์ข ๊ฑธ๋ ธ๋๋ฐ ์๊ฐ์ ์ ๋ฆฌํ๋ ๊ฒ๊ณผ ์ผ์ข
์ ํธ๋ฌ๋ธ ์ํ
์์ฑ์ด ๊ฑธ๋ ธ๋ค.
๐ lib/shopping_mall
// ์ผํ๋ชฐ ํด๋์ค
class ShoppingMall {
List<Product> products = [];
int totalPrice = 0;
// ์ํ๋ช
, ๊ฐ๊ฒฉ
ShoppingMall() {
products.add(Product("์
์ธ ", 45000));
products.add(Product("์ํผ์ค", 30000));
products.add(Product("๋ฐํํฐ", 35000));
products.add(Product("๋ฐ๋ฐ์ง", 38000));
products.add(Product("์๋ง", 5000));
}
// ์ํ ๋ชฉ๋ก ์ถ๋ ฅ
void showProducts() {
for (var p in products) {
print("${p.name} / ${p.price}์");
}
}
// ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ ๋ก์ง
void addToCart(String productname, int productnumber) {
// ์์๊ฐ ์ฒ๋ฆฌ
if (productnumber <= 0) {
print("0๊ฐ๋ณด๋ค ๋ง์ ๊ฐ์์ ์ํ๋ง ๋ด์ ์ ์์ด์ !");
return;
}
// ์ํ ์ฐพ๊ธฐ
for (var i = 0; i < products.length; i++) {
var pd = products[i];
// ์ํ ๋ด๊ธฐ ์ฑ๊ณต ๋ก์ง
if (productname == pd.name) {
totalPrice += productnumber * pd.price;
print("์ฅ๋ฐ๊ตฌ๋์ ์ํ์ด ๋ด๊ฒผ์ด์ !");
return;
}
}
// ์
๋ ฅ๊ฐ ์ค๋ฅ ์ฒ๋ฆฌ
print("์
๋ ฅ๊ฐ์ด ์ฌ๋ฐ๋ฅด์ง ์์์ !");
}
// ์ด ๊ฐ๊ฒฉ ์ถ๋ ฅ
void showTotal() {
print("์ฅ๋ฐ๊ตฌ๋์ $totalPrice์ ์ด์น๋ฅผ ๋ด์ผ์
จ๋ค์ !");
}
}
// ์ํ ํด๋์ค
class Product {
String name;
int price;
Product(this.name, this.price);
}
๐ฌ ์ด์ด์ ์ฅ๋ฐ๊ตฌ๋ ๋ด๋ ๋ก์ง์ ๊ตฌํํ๋๋ฐ,
String์ผ๋ก ์ํ๋ช ,int๋ก ์ํ ๊ฐ์๋ฅผ ๋ฐ๋๋ก ํ์๋ค.
๊ณผ์ ๋ด์ฉ์ฒ๋ผif๋ฌธ์ ์ฌ์ฉํ์ฌ ์์๊ฐ ๋ค์ด๊ฐ๋ฉด ์์ ๋ก์ง, ์๋๋ผ๋ฉด ์๋๊ฐ ์คํ๋๋๋ก ํ๋ค.
๐ฌ ์ฌ๊ธฐ์
for๋ฌธ์ ์ฌ์ฉํ์ฌproducts.length๋งํผ ๋ฐ๋ณต์ํค๊ณ , ์ํ๋ช ์ ๋์กฐํ์ฌ ๋งค์น๋๋ค๋ฉด ์ํ์ด ๋ด๊ฒผ๋ค๋ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ค. ๋งค์น๋์๋ค๋ฉดreturn์์ผ ํด๋น ๋ก์ง์ ๋๋ด๊ณ , ์๋์๋ค๋ฉด ์ ๋ ฅ๊ฐ ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ๋ง๋ค์๋ค.
์ด๋ ์ var i,var pd๋ณ์ 2๊ฐ๊ฐ ํ์ํ๋๋ฐ,for (var pd in products)๋ฅผ ์ฌ์ฉํ๋ คํ๋ค ๋๋ฌด ๋ณต์กํ๊ณ ์ด๊ฒ ๋ณ์๊ฐ ํท๊ฐ๋ ค์? ์ดํด๊ฐ ์๋ ์ํ๋ก ํ๋ ค๋ค๊ฐ ๋ค์ ๊ธฐ๋ณธfor๋ฌธ์ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
๐ฌ ๊ฐ๊ฒฉ์ ๊ฒฝ์ฐ
+=ํด๋นtotalPrice์ ์ํ์ ๊ฐ์๋งํผ์ ๊ธ์ก์ด ๋ด๊ธฐ๋๋ก ๊ตฌํํ์๋ค. ์ฃผ์๋ ๊น๋ํ๊ฒ ํด๋น ๋ก์ง ์์ ๋ฌ์์ฃผ์๋ค.
๐ฆ ์๊ฐ๋ณด๋ค ์
iffor๋ฌธ์ ์๊ฐ์ ๋ง์ด ํ ์ ํ๋๋ฐ, ์ฐ์productnumber๋ฅผproductname๋ณด๋ค ์์ ๋ฐฐ์นํ์ฌ์, ๋ชจ๋ ๋ฆฌ์คํธ๋ฅผ ๋ค์ง๊ณ ๊ฐ์ด ์์ด์ ๋ก์ง์ ํ๋ ๊ฒ์ด ์๋! ๋จผ์ ์ซ์์์ ์ค๋ฅ๊ฐ ์๋ค๋ฉด ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ์์๋ฅผ ๋ฐ๊ฟจ๋ค.
๊ทธ๋ฆฌ๊ณ ,bool์ ์ ์ธํด์ false๊ฐ ๋๊ณ , true๊ฐ ๋๋ฉด? ์ด๋ฐ์์ผ๋ก ์ ์ด๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ, ์ฌ์ค์ ์ซ์๊ฐ ์ณ์ ๊ฐ์ผ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ์๋ ๊ฒฝ์ฐ, if์์ ์ํ์ ์ฐพ์์ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ค์ ์์ด print ๋ง ์ฌ์ฉํ์ฌ ์๋ฌด๊ฒ๋ ํด๋นํ์ง ์์ ๋ ํด๋น ๋ก์ง์ ํ๋๋ก ํ๋ค.
์ด ๋ถ๋ถ์์ ์ ์ผ ์ด๋ ค์ ๋๊ฑดvar pd = products[i];์ฌ๊ธฐ ๋ฐ๋ณตํ๊ณ ์ด๊ฑธ pd.name, productname ๋๊ฐ๋ฅผ ๋น๊ตํ๊ฒ ํด์ผ๋๋ค๋๊ฑธ ๋ชฐ๋ผ์? ํท๊ฐ๋ ค์ ์ด ๋ณ์๋ผ๊ณ ํด์ผ๋ ๊น.. ๊ฐ ๋น๊ต๊ฐ ์ด๋ ค์ ๋ค.
๐ bin/shopping_mall
import 'dart:convert';
import 'dart:io';
import 'package:shopping_mall/shopping_mall.dart';
void main(List<String> arguments) {
// ์ผํ๋ชฐ ์ธ์คํด์ค ์์ฑ
var shoppingMall = ShoppingMall();
// ์ผํ๋ชฐ ๋ฉ๋ด
String menu =
'[1] ์ํ ๋ชฉ๋ก ๋ณด๊ธฐ / [2] ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธฐ / [3] ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธด ์ํ์ ์ด ๊ฐ๊ฒฉ ๋ณด๊ธฐ / [4] ํ๋ก๊ทธ๋จ ์ข
๋ฃ';
String line = '-' * (menu.length + 20);
// ์ผํ๋ชฐ ๋ฉ์ธ ๋ก์ง
while (true) {
print(line);
print(' $menu');
print(line);
// ์
๋ ฅ๊ฐ ๋ณํ, ๊ณต๋ฐฑ ์ ๊ฑฐ
String? numberInput = stdin.readLineSync()?.trim();
//์ํ ๋ชฉ๋ก ์ถ๋ ฅ ๋ก์ง
if (numberInput == "1") {
shoppingMall.showProducts();
}
// ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ ๋ก์ง
else if (numberInput == "2") {
print('์ํ ์ด๋ฆ์ ์
๋ ฅํด ์ฃผ์ธ์ !\n');
// ์
๋ ฅ ๊ฐ ํ๊ธ ์ธ์ฝ๋ฉ
String? productname =
stdin.readLineSync(encoding: Encoding.getByName('utf-8')!)?.trim();
print('์ํ ๊ฐ์์ ์
๋ ฅํด ์ฃผ์ธ์ !\n');
// ์
๋ ฅ๊ฐ ๋ฐ๊ธฐ ๋ฐ ์ค๋ฅ ๋ฐ์์ null ๋ฐํ
String? productnumberInput = stdin.readLineSync()?.trim();
int? productnumber = int.tryParse(productnumberInput!);
// ์
๋ ฅ๊ฐ ์ฒ๋ฆฌ ๋ก์ง
if (productnumber != null) {
shoppingMall.addToCart(productname!, productnumber);
} else {
print("์
๋ ฅ๊ฐ์ด ์ฌ๋ฐ๋ฅด์ง ์์์ !");
}
}
// ์ด ๊ฐ๊ฒฉ ์ถ๋ ฅ
else if (numberInput == "3") {
shoppingMall.showTotal();
}
// ํ๋ก๊ทธ๋จ ์ข
๋ฃ ๋ก์ง
else if (numberInput == "4") {
print("์ด์ฉํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค ~ ์๋
ํ ๊ฐ์ธ์ !");
break;
}
// ๊ทธ์ธ๊ฐ ์
๋ ฅ ์ ๋์
else {
print("์ง์ํ์ง ์๋ ๊ธฐ๋ฅ์
๋๋ค ! ๋ค์ ์๋ํด ์ฃผ์ธ์ ..");
}
}
}
๐ฌ ์ฐ์ ์ผํ๋ชฐ ๋ฉ๋ด ์ถ๋ ฅ์ด ๋ชป์๊ฒจ์..
menu์line์ผ๋ก ๋๋์ด์ ๋ณ์ ๊ฐ์ ๋ฃ์ด์ ์ผํ๋ชฐ ๋ฉ์ธ ๋ก์ง์์ ์ถ๋ ฅํ๋๋ก ๋ง๋ค์๊ณ ,menu.length๋ณด๋ค ์ฌ์ ์๊ฒ ๋ง๋ค์๋ค.
๐ฌ ๊ทธ๋ฆฌ๊ณ ์ค๋ฅ ์ ๊ฑฐ๋ฅผ ์ํด
.trim()์ผ๋ก ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๊ณ , ์ ๋ ฅ ์ปค์๊ฐ ์ถ๋ ฅ ๋ฌธ์ฅ ๋ค์ ๋ถ์ด ์์ด์\n์ผ๋ก ๋ณด๊ธฐ ์ข๊ฒ ๋ง๋ค์ด ์ฃผ์๋ค.
๐ญ ์ ์ผ ์์ฉ์๋... (ํ์ )
String? productname = stdin.readLineSync(encoding: Encoding.getByName('utf-8')!)?.trim();์ฌ๊ธฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์null์ ๊ตฌ๋ถํด์ ํ์ ์ ๋ณํ์์ผ์ฃผ์๋ค.
์๋int? productnumber = int.tryParse(productnumberInput!);๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌธ์๋ก ๋ณํํ๋๋ฐ ์ฑ๊ณตํ๋ฉด ๋ก์ง, ์คํจํ๋ฉดnull์ ๋ฐํํ๋๋ก ํ์ฌ,productnumber != null์ด ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌproductname๊ณผproductnumber๋ฅผ ์ ๋ ฅ๋ฐ์๋ค.
์ดnull์ด๋ ๊ฐ์int?์ด๋ฐ์์ผ๋ก ๋ฐ์ง๋ง ๊ฒฐ๊ตญ ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋ฉด ํ๋ก๊ทธ๋จ์ด.. ์ฃฝ๊ธฐ ๋๋ฌธ์ ์ด null ํ์ฉ, null safe ๊ฐ์๊ฒ ์ค์ํ๋ค. ๊ทธ๋์!?๋ฅผ ์ ์ฌ์ ์์ ์ฌ์ฉํด์ผ๋ง ํ๋ค.
๐ฌ ๊ทธ ์ธ์ ์ด ๊ธ์ก์ ์ถ๋ ฅํ๋๊ฑด ๋๋ฌด... ์ฌ์ ๋ค.. ๋น๊ตํ์๋ฉด. ๊ทธ๋ฆฌ๊ณ ์์ ํ๋ฉด์ ๋์ถฉ ์ผ๋ ์ฃผ์๊น์ง ๊น๋ํ๊ฒ ์ ๊ณ ๊ณผ์ ๋ฅผ ๋ง๋ฌด๋ฆฌ ํ๋ค.
โ ์๋ชป๋ ๊ฐ์ ์ ๋ ฅํ ๋ ๋์ค๋ ๋ฌธ์ฅ์ด ์ถ๋ ฅ๋๋ ๋ฌธ์ ๋ฐ์
๐ญ ์ฒ์์๋ ๋ก์ง๋๋ก ์๋๊ณ ์์ผ๋ก ๋น ๋ ๊ฒ ๊ฐ์์, ๋ก์ง์ ์ฌ์ ๊ฒ ํด๋ดค์ง๋ง ๋ฌธ์ ์ ์ ์ฐพ์ง ๋ชปํจ.
โ ๊ณต๋ฐฑ ๋ฌธ์ ์ธ๊ฐ? ํ์ฌ, ๋ค์ ๊ณต๋ฐฑ์ ์์ ์ฃผ๋ ์ฝ๋.trim()๋ฅผ ์ถ๊ฐํด์, ๊ณต๋ฐฑ์ ์์ ๊ณ ๊ฐ์ ๋น๊ตํ๋๋ก ์ค์ ํจ.
// ๊ทธ๋ฌ๋ ๋๊ฐ์ ๋ฌธ์ ๋ฐ์
๐ ์ ์ผ ์ฌ์ด ๋ฐฉ๋ฒ์ธ ์ ์ถ๋ ฅ์
โ ๊ทธ ๊ฒฐ๊ณผ ์ ๋๋ก ์ ๋ ฅ๊ฐ์ ๋ฐ์ง ๋ชปํ๊ณ , p๋ก ์ ๋ ฅ ๋๋ ํ์์ ๋ฐ๊ฒฌ
๐ญ ์์ด๋ ๋ฌธ์ ์์ด ์ ๋ ฅ๋๋ ๊ฒ์ ๋ณด์ ํ๊ธ์ ๋ชป์ฝ๊ฑฐ๋ ํ๋ ๋ฌธ์ ์ธ ๊ฒ์ผ๋ก ํ์
โ ๊ทธ๋์ ํด๊ฒฐ์ ์ํดchcp 65001ํด๋น ๋ช ๋ น์ด๋ฅผ ๋จผ์ ์ ๋ ฅํ ๋คdart run์ ๋๋ฆฌ๋ฉด ํด๊ฒฐ๋๋ค๊ณ ํด์ ์๋ํ์ผ๋ ํด๊ฒฐ๋์ง ์์.
// @dart=2.19 // coding:utf-8โ ํ์ผ ์๋จ์ ํด๋น ์ฝ๋๋ฅผ ์ ๋ ฅํ๋ฉด
utf-8์ ์ด์ฉํด ํ๊ธ์ ์ ๋ ฅํ ์ ์๋ค๊ณ ํ์ฌ ์ถ๊ฐํ์ฌrun์คํ
// ๊ทธ๋ฌ๋, ์ฌ์ ํ ์ ๋ ฅํ๋ฉดp๋ง์ ์ ๋ ฅ๋ฐ๋ ๊ฒ์ ํ์ธํ๋ค.
โ ๋ช ๋ น ํ๋กฌํํธ์์ [์์ฑ - ๊ธ๊ผด - ํฐํธ ๋ณ๊ฒฝ] ์ ํ๋ฉด ํ๊ธ์ด ๊นจ์ง๋ ์ด์์ ๋ํด ํด๊ฒฐ๋๋ค๊ณ ํ์ฌ ๋ฐ๊ฟ๋ณด์์ผ๋, ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์ง์๋จ.
String? productname = stdin.readLineSync(encoding: Encoding.getByName('utf-8')!)?.trim();โ ํ๊ธ ์ธ์ฝ๋ฉ์ ๋ฐฉ๋ฒ์ผ๋ก
stdin.readLineSync(encoding: Encoding.getByName('utf-8'))?.trim();์ด๋ ์ธ์ฝ๋ฉ ์ฝ๋๋ฅผ ์ฐ๋ ๊ฒ์ ๋ฐ๊ฒฌ, ์ฝ๋์ ์ถ๊ฐ
๐ ์ฝ๋ ์์ฒด ์ค๋ฅ ๋ฐ์์ผ๋กEncoding?ํ์ ๋๋ฌธ์ด๋ ๋ฉ์ธ์ง์!๋ฅผ ์ถ๊ฐํ์ฌ ์ฝ๋ ์ค๋ฅ๋ ํด๊ฒฐ
// ๊ทธ๋ฌ๋ ์ฌ์ ํ ํ๊ธ ์ธ์ฝ๋ฉ ๋ฌธ์ ๊ฐ ์ง์๋จ.
โ ์ฌ๊ธฐ๊น์ง ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ถ๊ฐํ ์ฝ๋๋ค์ ๋ค๋ฅธ ์ปด์์ ์คํ์์ผฐ์ ๋๋ ์ ๋๋ก ์๋ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํจ. ๊ทธ๋ฌ๋, ๋ด vscode ์์๋ ๋ฌธ์ ๊ฐ ์ฌ์ ํ ๋ฐ์ํ๊ณ , ๋ค๋ฅธ ๊ณณ์์๋ ๋ฌธ์ ๋ฐ์ X, ๋ค๋ฅธ ๊ณณ์ vscode์์ ์คํํด๋ ๋ฌธ์ ์์. >> ์ด์ํ ํ์์ ๋ฐ๊ฒฌ๐ฆ
ํด๋น ํ์์ ํ ๋๋ก ๋ค๋ฅธ ์ปดํจํฐ ์ค์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ ์ปดํจํฐ ์ธ์ฝ๋ฉ? ์ธํ ๋ณ๊ฒฝ์ ํด์ผ๋๋ ๊ฒ์ธ์ง.. ์ฐพ์๋ณด๋ ์๋ ๋ฐฉ๋ฒ์ ์ฐ๋ผ๊ณ ํจ.
์ ์ดํ โ ์๊ณ ๋ฐ ๊ตญ๊ฐ โ ๊ตญ๊ฐ โ ๊ด๋ฆฌ์ ํญ โ ์์คํ ๋ก์บ ๋ณ๊ฒฝ โ "์ ๋์ฝ๋ UTF-8 ๋ฒ ํ ์ฌ์ฉ"
? ์ด ์ต์ ํค๋ฉด ๋๋ค๊ณ ๋ ํ๋๋ฐ... ๋ค๋ฅธ ์ปด์์๋ ์ด ์ต์ ์ด ์ฒดํฌ๊ฐ ์๋์ด ์์ด๋ ๋์๊ฐ๋ค๋ ๊ฒ...
โ Fork๋ก Commitํด์ Mac์์ ํ์ผ์ ๋๋ ค๋ณด์๋๋, ๋ชจ๋ ๊ฒ ์ ์์ ์ผ๋ก ์ ์๋ํ๋ค... ์๋ง ์ ์ผ ๋ง์ง๋ง์ ํ๋ ์ธ์ฝ๋ฉ ์ฝ๋๋ฅผ ๋ฃ์ด์ ํด๊ฒฐ๋ ๊ฒ ๊ฐ๊ธดํ๋ฐ ์ปดํจํฐ ์๋์ฐ ๋ฒ์ ๋๋ฌธ์ธ์ง.. ์ผ๋จ ์ ๋์ฝ๋ ๋ฒ ํ๋ ์ผ๋์๊ณ , ์ฌ๋ถํ ํ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์ ์ ์์ ๊ฒ์ด๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก! ํด๊ฒฐ์ด ๋์๋ค! ๋ค ์๋ฃ๊ฐ ๋์๋๋ฐ ์ด๊ฒ ์ปดํจํฐ ๋ฌธ์ ๋๋ฌธ์ ํ๋์ ์ก๊ณ ์์๋ ๊ฒ์ด๋ค...
๐ฆ Dart Console Shopping Mall
ย
Dart ์ธ์ด๋ก ๊ตฌํํ ์ฝ์ ๊ธฐ๋ฐ ์ผํ๋ชฐ ํ๋ก๊ทธ๋จ์ ๋๋ค.
์ํ ๋ชฉ๋ก ์กฐํ, ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ, ์ด ๊ธ์ก ํ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๐ ํด๋น ํ๋ก์ ํธ๋ ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ Dart ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์๋์์ต๋๋ค.
๐ฆ ํ๋ก์ ํธ ๊ตฌ์กฐ
ย
/shopping_mall
โโโ bin/ # ์คํ ํ์ผ
โ โโโ shopping_mall.dart
โโโ lib/ # ํด๋์ค, ๊ธฐ๋ฅ ๋ก์ง
โ โโโ shopping_mall.dart
โโโ test/ # ํ ์คํธ ํ์ผ (ํ์์)
โโโ pubspec.yaml # ์์กด์ฑ ๋ฐ ๋ฉํ ์ ๋ณด
โโโ README.md # ํ๋ก์ ํธ ์ค๋ช ํ์ผ
๐ ์คํ ๋ฐฉ๋ฒ
dart run bin/shopping_mall.dart
๐ ๊ธฐ๋ฅ ์๊ฐ
- ๐ ์ํ ๋ชฉ๋ก ์กฐํ
- ๐ ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ
- ๐ฐ ์ฅ๋ฐ๊ตฌ๋ ์ด ๊ธ์ก ํ์ธ
- โ ํ๋ก๊ทธ๋จ ์ข ๋ฃ
๐ฏ ์ฌ์ฉ ๊ธฐ์
- Dart(์ฝ์ ๊ธฐ๋ฐ)
- OOP(ํด๋์ค, ๊ฐ์ฒด์งํฅ)
- ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ํจ์, ๋ฆฌ์คํธ ๋ฑ Dart ๊ธฐ๋ณธ ๋ฌธ๋ฒ ํ์ฉ
โจ ํ๋ก์ ํธ ๋ชฉ์
- Dart ๋ฌธ๋ฒ ํ์ต ๋ฐ ์ฝ์ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ ์ฐ์ต
- ํด๋์ค์ ๋ฉ์๋๋ฅผ ํ์ฉํ ์ค์ต
- ๊ฐ๋จํ ์ ๋ ฅ/์ถ๋ ฅ ๋ก์ง์ผ๋ก ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ ๊ฐํ
๐ ์ฐธ๊ณ ์๋ฃ
- ์คํ๋ฅดํ์ฝ๋ฉ Dart ๊ฐ์
- ๊ณต์ Dart ๋ฌธ์ https://dart.dev
๐พ ์์ผ๋ก ๊ฐ์ ํ๋ฉด ์ข์ ๊ธฐ๋ฅ
- ์ํ ์ถ๊ฐ ๋ฐ ์ญ์
- ์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก ์ถ๋ ฅ
- ํ์ผ ์ ์ฅ ๋ฐ ๋ถ๋ฌ์ค๊ธฐ(๊ฐ๋จํ ๋ฐ์ดํฐ ์ ์ฅ)
์ด๋ ๊ฒ ํ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , README๊น์ง ์์ฑ์ ์๋ฃํ๋ค.
๊ฐ์ ํ๋ฉด ์ข์ ๊ธฐ๋ฅ์ด๋, ๋์ ๊ณผ์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์๊ฐ์ด ๋ถ์กฑํ์ฌ ์งํํ์ง ๋ชปํ๋ค.
์ฒ์ ํ๋ค๋ณด๋ ์ฌ์ํ ์ค๋ฅ์ ํ์ฐธ์ด๋ ๊ฑธ๋ฆฌ๊ณ , ๊ทธ๊ฑธ AI๋ฅผ ํ์ฉํด๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๊ฑฐ๋ ํ๋ ๋ฑ์ ๋ฌธ์ ๋๋ฌธ์ ์๊ฐ ๋ถ๋ฐฐ๋ผ๊ณ ํด์ผ๋ ๊น... ์ด๋ ค์ ๋ ๊ฒ ๊ฐ๋ค.
์ฌ์ค์ ํ์ ๊ธฐ๋ฅ์ ์ด์ ์ข ๋ง๋ค๊ณ ์ค๋ ์ถ๊ฐ๊น์ง ์๋ฃํด์ ์๊ฐ์ ๋๋ฆ ๊ด์ฐฎ์๋๋ฐ, ์ด ํ๊ธ ์ธ์ฝ๋ฉ ๋ฌธ์ ๊ฐ... ์ปดํจํฐ ๋ฌธ์ ๋๋ฌธ์ด๋ผ๋... ํํํ๋ค... ๐ซ
๊ธฐ๋ฅ ๊ตฌํ
โ ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
โ ์ฅ๋ฐ๊ตฌ๋ ๊ฐ๊ฒฉ ์ถ๋ ฅ ๊ตฌํ
๐ก ์ฝ๋ ์์ ๋ฐ README ์์ฑ
โ ์ผํ๋ชฐ ๋ฉ์ธ ๋ฉ๋ด ๋ผ์ธ ์ฝ๋ ์์
โ ๊ณผ์ ์๊ฐ README ์์ฑ
๐ฑ ์ค๋์ ๊ณผ์ ๋ฅผ ์๋ฃํ๊ณ ์ค๋ฅ ํด๊ฒฐํ๊ณ ... ์ปค๋ฐํ๊ณ .. TIL ์์ฑํ๋ค. ๋ญ๊ฐ ๋๋์ด ํด๋๋ค์ ๋งํ ๋ ํ์์ด ์ด๋ ค์ด๋ฐ ํ๋ฒ ํด๊ฒฐํ๋ฉด ๋ญ๊ฐ ๊ทธ์ ์์ผ ์ดํด๋๊ณ ์ด๋ ๊ฒ ์ฌ์ ๋..? ์ฌ์ด๊ฑด ์๋์ง๋ง! ๊ทธ๋ฐ ๋๋์ด์๋ค.
์ด๋ก ๋ง ์๊ณ ๊ธฐ์ด๋ง ์๋ค๊ฐ ์ด๊ฒ ์ฌํ๋ฅผ ํ๋ ค๋๊น ๋ง๋งํ ๊ฒ๊ณผ ๊ฐ์๋ฐ, ์ํํ๊ณ ์ง์ง ๋๊ฐ์ ๋๋์ด๋ค. ์์ ์๊ณ ๊ธฐ์ด๋ ์๋๋ฐ ์ด๊ฑธ ์ฌํ ๋ฌธ์ ๋ฅผ ๋ธ๋ค? ๊ทธ๋ฌ๋ฉด ์ด๋ ต๊ณ ํ์ฉํ๋ ๋ฒ์ ๋ชฐ๋ผ์ ์ผ๋จ ํ๋ฒ ์์์ผ ๊ทธ์ ์์ผ ๋ค์์ ์ธ ์ ์์ ๋ฒํ ๋๋์ด๋ค.
์๋ฌดํผ ๋ค์ ๊ณผ์ ๋ ์ข ๋ ์.. ์ฝ๋ฉํ ์ ์๊ธฐ๋ฅผ!
๐ ๋ด์ผ์ 3๊ฐ ๋จ์ ๊ฒ์ ๋ง์ ๋ฃ๋๋ฐ, ์คํ์ ๊ณผ์ ํ์ด ์๊ฐ์ด ์์ด์ ํด๋น ์๊ฐ์ด ๋๋๋ฉด ์ฝ๋.. ์์ ์ ์๋๋ฅผ ํด๋ณผ์ง? ์๋๋ฉด TIL ์ ๋ฆฌ ์ ๋๋ก ๋๋ผ์ง ๋ด์ผ๊ฒ ๋ค. ์ฝ๋ฉ์ ์ ๋ต.. ์ด๋ผ๊ณ ๋ ์๋ค์ง๋ง ๋ํดํธ, ์ต์ ํ ๋ ์ฝ๋๋ ์์ผ๋๊น ์ ๋ฐฐ์๋ฌ์ผ ํ๋ค.