✅ 일시 : 2023년 4월 24일(월) 14:00 - 16:00
✅ 연사 : 박재성 | 넥스트스텝 CEO
의식적인 연습의 7가지 원칙
- 효과적인 훈련 기법이 수립되어 있는 기술 연마
- 개인의 컴포트 존에서 벗어난 지점에서 진행, 자신의 현재 능력을 살짝 넘어가는 작업을 지속적으로 시도
- 명확하고 구체적인 목표를 가지고 진행
- 신중하고 계획적. 개인이 온전히 집중하고 의식적으로 행동할 것을 요구
- 피드백과 피드백에 따른 행동 변경
- 효과적인 심적 표상을 만들어내는 한편으로 심적 표상에 의존
- 기존에 습득한 기술의 특정 부분을 집중적으로 개선하여 발전시키고 수정하는 과정을 수반
public class StringCalculator {
public static int splitAndSum(String text) {
int result = 0;
if (text == null || text.isEmpty()) {
result = 0;
} else {
String[] values = text.split(",|:");
for (String value : values) {
result += Integer.parseInt(value);
}
}
}
}
public class StringCalculator {
public static int splitAndSum(String text) {
int result = 0;
if (text == null || text.isEmpty()) {
result = 0;
} else {
String[] values = text.split(",|:");
result = sum(values); ✅
}
}
private static int sum(String[] values) { ✅
int result = 0;
for (String value : values) {
result += Integer.parseInt(value);
}
return result;
}
}
public class StringCalculator {
public static int splitAndSum(String text) {
if (text == null || text.isEmpty()) { ✅
return 0;
}
String[] values = text.split(",|:");
return sum(values);
}
private static int sum(String[] values) {
int result = 0;
for (String value : values) {
result += Integer.parseInt(value);
}
return result;
}
}
public class StringCalculator {
public static int splitAndSum(String text) {
if (text == null || text.isEmpty()) {
return 0;
}
String[] values = text.split(",|:");
int[] numbers = toInts(values); ✅
return sum(numbers);
}
private static int[] toInts(String[] values) { ✅
int[] numbers = new Int[values.length];
for (int i = 0; i < values.lengthl; i++) {
numbers[i] = Integer.parseInt(values[i]);
}
return numbers;
}
private static int sum(int[] numbers) { ✅
int result = 0;
for (int number : numbers) {
result += number;
}
return result;
}
}
public class StringCalculator {
public static int splitAndSum(String text) {
if (text == null || text.isEmpty()) {
return 0;
}
return sum(toInts(text.split(",|:"))); ✅
}
private static int[] toInts(String[] values) {
int[] numbers = new Int[values.length];
for (int i = 0; i < values.lengthl; i++) {
numbers[i] = Integer.parseInt(values[i]);
}
return numbers;
}
private static int sum(int[] numbers) {
int result = 0;
for (int number : numbers) {
result += number;
}
return result;
}
}
public class StringCalculator {
public static int splitAndSum(String text) {
if (isBlank(text)) { ✅
return 0;
}
return sum(toInts(split(text))); ✅
}
private static boolean isBlank(String text) { ✅
return text == null || text.isEmpty();
}
private static String[] split(String text) { ✅
return text.split(",|:");
}
private static int[] toInts(String[] values) {
int[] numbers = new Int[values.length];
for (int i = 0; i < values.lengthl; i++) {
numbers[i] = Integer.parseInt(values[i]);
}
return numbers;
}
private static int sum(int[] numbers) {
int result = 0;
for (int number : numbers) {
result += number;
}
return result;
}
}
클래스 분리 연습을 위해 활용할 수 있는 원칙
- 모든 원시값과 문자열을 포장
- 일급 콜렉션 쓰기
- 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다
- 함수의 인자 수를 줄인다. 3개 이상은 가급적 피하기
<엘레강트 오브젝트>
- 생성자 하나를 주 생성자로 만들기
- 퍼블릭 상수 사용하지 않기
- 불변 객체로 만들기
- 모의 객체 대신 페이크 객체 사용
- 5개 이하의 퍼블릭 메서드만 노출
- 정적 메소드 사용 X
- 절대 setter와 getter 하용하지 않기
- 부 생성자 밖에서는 new 사용하지 않기
사람은 기본적으로 변화를 거부하는 성향
팀은 변화를 거부하는 성향이 강함
대부분의 사람들은 변화에 실패한 경험을 가지고 있음
오히려 팀장의 위치에서 변화를 만드는 것이 더 어려움
팀원들은 침묵을 선택할 수 밖에 없음
말만 잘듣고 시키는 것만 잘하는 인재가 아닌, 주도적인 인재가 지금의 인재상
실패해도 괜찮다. 실패하기 전보다는 나는 한 단계 성장한다. 좋은 회사는 실패해도 같이 도전하는 사람을 원한다.
가장 필요한 것은 가보지 않은 길에 꾸준히 도전할 수 있는 용기
💭 만약 리더가 변하려고 하지 않는다면 조직원은 어떻게 해야하나요?
💭 업무와 리팩토링 중 어떤 것이 더 중요한가요?
💭 코드 작성 시 유지보수를 위해 가장 고려하는 부분은?
💭 어드민 위주의 개발만 하다보니 트래픽 많은 서비스의 경험이 없습니다. 커리어가 걱정되는데 어떻게 해야 할까요?
💭 자주 사용되고 반복되는 코드는 분리하는 게 맞지만 그렇지 않다면 유지보수를 위해 어느 레벨까지 분리하는 것이 좋은가요?