📅 주간 회고(221025 ~ 221031)

  • git, github을 통한 협업 과정 공부
  • 자바의 초반부분 공부( ~ 객체지향 입문)

📚 공부한 것 정리

📋 git, github

부트캠프에서 제공해 주는 실시간 강의를 통해 git의 개념과 사용법, github를 통한 협업을 배웠다. 일단 프로젝트를 버전을 나누며 작업을 한다는 branch의 개념을 익히는 데에 주력했다. 비교적 쉬운 부분이 많기에 학습의 문제는 없었으나 관리하는 개념에서는 쉽지않다고 생각이 들었다. pull, push하는 과정에서 사라지거나 생기거나 하는 branch의 관리가 중요하다고 생각한다.

개인적으로 templete의 방식을 정하는 것이 중요하다는 생각이 든다. 개발을 할 때 팀원간의 원활한 소통을 위해 더 나은 개발을 위해 가독성 좋은 templete을 정하는게 중요하다고 생각한다.
templete예시

git, github의 관련 내용은 따로 글을 하나 더 작성할 예정이다.

📋 자바

이번 주에 자바에 관련해서 시간을 가장 많이 쏟았다. 이전에 자바를 공부할 때 개념에 대해 제대로 이해하지 못해서 후반부를 공부할 때 용어가 너무 헷갈려 굉장히 큰 어려움을 겪었기에 개념에 대해 집중하며 공부했다. 또한 가독성 높은 코딩을 하는 것을 목표로 삼았다.

대략 2가지의 목표로 공부를 시작했다.

  1. 용어의 개념을 정확하게 알기
  2. 가독성 높은 코딩하기

✏️ 개념

📄 리터럴(litiral)

리터럴의 개념을 처음 알게됨. 내가 쓰는 모든 숫자,문자 등이 전부 리터럴이고 내가 변수에 어떤 값을 할당하는 것을 리터럴에서 값을 불러와서 사용하는 것이라고 알게 됨. 이에따라 리터럴을 int와 double을 기본값으로 설정하였기에 큰 정수나 float크기의 실수를 L,F를 붙여 사용해야함

long iNum = 1234567890;  // 오류
long iNum = 1234567890L 

float fNum = 3.14;	// 오류
float fNum = 3.4F;

📄 this

this가 정확하게 인스턴스 자신의 메모리를 가리키는 지는 처음 알게 됨. 이를 통해 생성자에서 다른 생성자를 부를 때 사용하는 코드를 짤 수 있게 됨

public class Person {

	String name;
	int age;
	
	public Person() {
		this("이름없음", 1);	// 아래의 생성자를 호출하여 사용할 수 있음
	}
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
}

📄 변수들

변수라는 말이 붙은 용어가 많아지면서 공부를 해가는데 큰 어려움을 겪었기에 한번 정리함.

  • 멤버(member) 변수
    • 클래스내에서 선언하는 변수로 클래스의 속성이나 특성을 나타냄, 인스턴스 변수와 클래스 변수가 있다.
    • 보통 클래스를 인스턴스로 사용하기에 멤버변수를 인스턴스 변수라고 많이 칭함
  • 인스턴스(instance) 변수
    • 클래스를 내부에서 사용하고 private이 아니라면 참조변수를 통해 사용가능함.
    • 인스턴스가 생성될 때 힙(heap) 메모리에 생성되고 가비지 콜렉터가 수거할 때 사라짐(자바는 자동으로 사라짐)
  • static 변수(클래스 변수)
    • static 예약어를 통해 선언된 변수로 private이 아니라면 어디서든 사용 가능함.
    • 특이하게 프로그램이 생성될 때 바로 Data 영역에 메모리가 잡히기에 인스턴스를 선언하지 않고도 사용 가능함.
  • 지역(local) 변수
    • 특정구역(함수, 메서드 ...) 안에서 선언되는 변수로 구역 안에서만 사용 가능
    • 사용하기 전에 초기화가 필요함
    • stack메모리에 저장되었다가 사라진다.
  • 참조(reference) 변수
    • 메모리에 생성된 인스턴스의 주소를 가리키는 값
    • 실제 값이아닌 주소 값을 저장함
  • 매개 변수(parameter)
    • 메서드 또는 생성자를 선언 할 때 입력해주는 변수
    • public int sum(int a, int b) {
      		return a+b;
      }
    • 위 코드의 java int a, int b 에 해당하며 자료형을 지정해 줘야함.

✏️ 가독성

📄 변수 이름

이전 까지는 변수이름을 최소한의 정보로 간결하게 작성했는데 차라리 변수이름이 길어지더라도 자세하게 변수이름을 정하는게 좋다는 것을 알게 됨.

  • StudentL (x)
  • highSchool_Student_Lee (o)

📄 괄호

이중으로 괄호를 사용할 때 괄호가 어디까지인지 구분하기 힘든 적이 여러번 있었음. 이를 수정하기 위해 ( 내용 ) 이런식으로 중간의 띄워쓰기를 넣기를 하는 것이 좋은 습관이 될 것 같음

if( ( a+b ) < 10 ) || ( a*b) > 30 ) ){

내용

}

논리 연산자의 괄호 부분에서 괄호를 굳이 써주는 게 좋음. 이전에는 굳이 쓰지 않았는데 괄호를 쓰는게 좋다고 함.

if(  a+b  < 10  ||  a*b > 30  )	// 산술 연산자가 먼저기에 굳이 쓰지 않아도 됨
if( ( a+b ) < 10 ) || ( a*b) > 30 ) ) 	// 가독성을 위해 괄호를 써줌

📄 for문 생략

초기화, 조건, 증감식 등이 복잡한 경우 생략하여 따로 작성함. 이전에는 그냥 길게 작성했는데 아래에 쓰는게 보기 좋음

for( int i = 0; ; i++){
sum += i;
if ( sum % 13 == 12) break;	// 조건식을 따로 작성함
...
}

📄 향상된 for문

배열, ArrayList에서 자주 사용하는 for문인데 이제까지 존재자체를 몰랐기에 자세하게 정리하기로 함.

  • for문을 배열을 가지고 특정 작업을 반복 할 경우에 많이 사용 (아마 출력부분에서 자주 사용함)
  • for(자료형 변수명 : 배열명) 구조를 가짐
  • 배열값을 쓰는 것은 가능하나 값을 바꾸는 수정이 불가능함
for( Student sutdent : studentList) {

	student = name;		// studentList의 배열의 studentList[0]부터 들어가지만 값을 수정하지 못함.
    
}
  • 다 차원 배열일 경우 for(자료형 한 단계 아래의 자료형의 변수명 : 배열명)를 해야함
String[][] arr = { { "1-1","1-2","1-3"},{ "2-1","2-2","2-3"}};
 		
for(String[] arrs : arr) { // 한 단계 아래의 차원을 써야함
	for(String s : arrs) {
		System.out.println(s);
	}
}

🛑 어려웠거나 아쉬웠던 점

🛑 변수라는 이름이 붙은 용어들을 정리하는 데 어려움을 겪었음

🛑 메모리 관련한 부분에 대한 이해가 없어서 각 메모리가 생성되고 사라지는데 어떤 변수가 그 메모리에 잡히는 논리적인 이유를 이해하지 못했음

🛑 아쉬운 점은 아직 이해가 부족한 부분은 개념 정리가 덜 된채 공부를 진행해야 한다는 점. 메모리같은 부분은 개념에 대한 이해가 높아진 후에 작성해야 할 것 같음..

✅ 잘하거나 개선한점

✅ 이전에 정확히 모르던 개념이나 용어등을 정리하여 앞으로의 공부에서 몰라서 다시 찾아보는 경우가 많이 줄어들 것 같음.

✅ 가독성 높은 코딩을 하는 법을 습관으로 익히고 있는 데 이전에 했던 코드들과 비교해도 훨씬 보기 편해졌음.

🙃 느낀점

😊 공부를 시작하기 전에 계획한 대로 진행이 잘 된것 같아 기분이 좋았음.

원하던 개념들을 이해하고 용어들을 정리하게 된 것에 매우 만족함.
특히, 변수라는 이름이 붙은 용어들을 햇갈리지 않게 된 것만 해도 크게 얻어간다고 생각함.

😊 가독성 높은 코딩을 하는 법을 어느정도 알게 됨.

매번 코딩할 때 앞부분의 코드를 다시 살펴보거나 여러 변수를 사용할 때, 다시 찾아보고 생각하는 시간이 줄 것 같음.
괄호나 변수 이름을 지정하는 방법 같은 건 기본적인 것 같은데 몰랐던 것이 조금 부끄러웠음.

🤔 이대로 계속 공부가 진행되면 좋을 것 같지만 개념적 부분에 대한 이해를 하는데 시간과 노력을 많이 쏟아야 할 것 같아 걱정됨.

메모리 같은 부분은 이해하는 데에도 시간이 걸렸는데 아직 완전한 이해를 못하기에 나중에 다시 정리할 예정

'천릿길도 한걸음'부터 시작이니 조급해하지말고 꾸준한 공부가 중요하다고 명심하자

profile
코딩 시작

0개의 댓글