항상 느끼는거지만 변수명이든 함수명이든 작명센스가 개똥이다.


조금이라도 나아지려고 Naming Convention을 알아봤다.



JAVA Naming Convention


1. Class    

클래스의 첫 글자는 대문자로 작성한다. 또한 클래스의 이름은 명사로 작성한다.

예를 들자면 Split, Convert, Event 등.


2. interface

인터페이스의 첫 글자는 대문자로 작성한다. 인터페이스의 이름은 형용사로 작성한다.

예를 들자면 Runnable.. 형용사는 잘 몰라서 하나밖에 생각 안난다.


3. method

메소드의 첫 단어는 소문자로 작성한다. 메소드의 이름은 동사로 작성한다.

print, setValue 등등..


4. variable

변수의 첫 단어는 소문자로 작성한다.


5. constant

상수는 전체를 대문자로 작성한다.




CamelCase


사실 카멜케이스는 별거 없다. 

여러 단어가 들어간 Name에는 두번 째 단어 첫 글자를 대문자로 표현한다.

중간에 대문자가 뽈록 튀어나와서 낙타의 혹을 닮았다고 카멜케이스란다.

여태 몰랐던 내용인데 알게되어서 적어본다.

String은 자료형이 아니라 객체라는 사실은 알고 있었을텐데

String만 예외적으로 new를 이용해 객체를 생성하지 않아도 된다한다.


1
2
String str1 = new String("str"// String Object generate
String str2 = "str" // simple case
cs




문자열을 비교할 때 equals()함수를 쓰는 이유를 알아봤다.

결론만 말하자면 == 연산자로는 String객체에 저장된 문자열을 비교할 수 없기 때문이다.

한마디로 "str"이라는 문자열은 리터럴이라 주소를 가지고 메모리에 할당 되는데

new를 이용해 문자열을 저장하면 메모리에 할당되는 동시에 그 메모리에 문자열이 저장된다.

2번째 줄과 같이 단순 대입을 한다면 "str"의 주소를 가져오는 꼴이다.


따라서 str1, str2의 내용은 같아 보여도 ==연산자는 주소를 가지고 비교하기에 (이때 주소는 JVM에 할당된 영역이다.)

서로 다른 것으로 인지한다.

1
2
3
4
5
6
7
8
9
String str1 = new String("str"// String Object generate
String str2 = "str" // simple case
 
str1 == str2 // false
str1 == "str" // false
str2 == "str" // true
str1.equals(str2) // true
str1.equals("str"// true
str2.equals("str"// true
cs



일단 sqlite3 라이브러리가 필요하다.

없다면 다운받아서 사용하도록.



사용하려면 아래와 같이 import를 시켜줘야한다.

import sqlite3

다음으로 연결을 시켜줘야하는데 db가 생성되있지 않다면 생성을 해주니까 걱정 안해도 된다.


conn_db = sqlite3.connect("~.db")

연결이 되었다면 Cursor을 생성해줘야하는데 

Cursor는 데이터베이스에 SQL문을 작성하도록 해주는 역할이라 생각하믄 된다.


cur = conn_db.cursor()

SQL문을 작성을 해서 보내면 됩니다! 이땐 execute함수를 사용한다.


cur.execute(SQL문)

SQL문을 작성한 결과를 보고 싶다면 fetchall함수로 볼 수 있다.


result = cur.fetchall()

전체적인 코드를 보면 아래와 같다.


import sqlite3

conn_db = sqlite3.connect("~.db")
cur = conn_db.cursor()
cur.execute(SQL문)
result = cur.fetchall()


개발할 때 사실상 저렇게 사용하지 않는다.

리소스를 아끼기 위해서 with문을 사용한다.

db에 connect를 하고 cursor로 접근한 것을 with문이 끝나면 리소스 정리를 통해 disconnect를 시켜주기 때문.



import sqlite3

conn_db = sqlite3.connect("~.db")

with conn_db:
    cur = conn_db.cursor()
    cur.execute(SQL문)
    result = cur.fetchall()

+ Recent posts