하드 코딩(Hardcoding)과 소프트 코딩(Softcoding) 이란?
개발 병아리 시절에 나는 내가 하드 코딩을 하는지, 소프트 코딩을 하고 있는지 인지를 못했다.
솔직하게 말하면, 하드코딩이 편한 부분이 많기 때문에 하드코딩 위주로 개발을 했었다.
하지만 하드코딩과 소프트코딩에 대한 개념 및 장점,단점을 알게 된 이후로
하드코딩이 필요한 곳만 하드코딩을 하고 웬만하면 소프트 코딩으로 하려고 노력을 한다!
아무튼 하드코딩과 소프트코딩에 대해서 잘 모르는 나같은 초보 개발자들도 있을거라고 생각하여 정리를 해본다.
하드 코딩, 소프트 코딩에 대해 알아보기 전에
'코딩(Coding)' 개념에
대해 알아보도록 하자.
코딩의 사전적 의미
1. 어떤 일의 자료나 대상에 대하여 기호를 부여하는 일.
2. 작업의 흐름에 따라 프로그램 언어의 명령문을 써서 프로그램을 작성하는 일.
3. 프로그램의 코드를 작성하는 일.
다시 본론으로 돌아와,
코딩(Coding)은 ‘code’와 ‘ing’의 합성어입니다.
그렇다면 코드(code)란 무엇일까?
프로그램에서 작업을 수행하기 위하여
사용되는 하나의 명령어 또는 몇 개의 명령어들로 구성된 부분을 뜻합니다.
코딩은 프로그램에서 작업을 수행하기 위해 사용되는 언어로 컴퓨터에게 명령하는 것을 말한다.
코딩을 하려면 컴퓨터에게 명령을 해야합니다.
컴퓨터가 이해할 수 있게 적합한 언어를 사용해야 하는데,
C, Java, Python, Kotlin, PHP 등
다양한 컴퓨터 언어가 있습니다.
컴퓨터 언어를 이용하여 코딩을 해서
컴퓨터에게 명령을 내리면 하나의 프로그램이 완성됩니다 !
이렇게
프로그램 하나를 만드는 과정을 코딩이라 하고
넓은 의미로는 프로그래밍이라고 합니다.
하드 코딩(HardCoding)과 소프트 코딩(SoftCoding)은
프로그래밍에서 사용되는 다른 접근 방식을 나타내며,
주로 상수나 리터럴 값 또는 매직 넘버(특정 값을 바로 코드에 입력한 것)
와 관련이 있다.
하드 코딩 (Hardcoding) 이란?
코드 내에 직접 값을 입력하거나 리터럴 상수를 사용하는 방식을 말합니다.
즉, 값을 코드에 직접 작성하는 것을 의미합니다.
하드 코딩으로 개발을 하면
코드 수정이 쉽지 않아 유지보수에 어려움을 느낄 수 있습니다.
하드코딩이 된 부분이 많은 경우에는
코드 수정이 필요한 경우에
모든 해당 값이 있는 코드를 다 찾아서
수정해야 하기 때문에 번거롭고 관리가 어려워진다.
하나라도 빼먹으면 오류가 발생할 수도 있다.. !
그래서 유지보수까지 생각을 한다면 하드코딩은 지양하는것이 좋다
💻 하드코딩 예시
🔍 설정된 파일이나, 파라미터로 넘어온 값으로 설정하는게 아닌
고정 값으로 변수 선언합니다.
🔍 이 코드에서 ".txt"는 하드 코딩된 값 입니다.
만일 파일 확장자가 변경되면 이 코드를 수정해야 합니다.
소프트 코딩 (Softcoding) 이란?
코드 내에서 값을 변수 또는 설정 파일과 같은 외부 리소스에서 가져오는 방식입니다.
값을 중앙에서 변경하거나 설정할 수 있기때문에
유지보수와 확장성이 향상됩니다.
소프트 코딩은 코드를 더 유연하게 만들어
변경에 대응하기 쉽게 해줍니다.
💻 소프트코딩 예시
🔍 설정 파일이나, 파라미터 등으로
받아온 값으로 변수 선언합니다.
🔍 이 코드에서 .txt와 같은 확장자는 외부에서 제공된 목록에서 가져옵니다.
이렇게 하면 코드를 수정하지 않고도 지원되는 확장자 목록을 변경할 수 있습니다.
🔍 또는 DB에 저장된 값을 가져와서 사용하거나,
global.java같은 파일에 값을 할당 후 가져와 사용하는것도 좋은 방법입니다.
이제,
하드코딩 문제점과 소프트코딩의 장점에 대해 알아봅시다.
📌 하드 코딩의 문제
하드코딩의 문제는
변경이 필요한 경우 모든 코드에서 해당 값을 변경해야 하므로
오류가 발생할 가능성이 높아지고,
동일한 값을 여러 곳에 사용하는 경우 일관성이 유지되지 않을 수 있습니다.
반면,
소프트 코딩은 중앙에서 값을 관리하고 필요한 경우
한 곳에서 수정함으로써 일관성을 유지할 수 있습니다.
코드를 더 유연하게 만들어서 변경 사항을 처리하거나 설정을 조정할 때 더 용이합니다.
이러한 이점들로 인해 소프트 코딩은 코드의 품질과 유지보수성을 향상시키는 데 도움이 됩니다.
내가 개발할때 그 순간에는 하드코딩이 편할 수 있겠지만,
다른 개발자가 오류 혹은 개선할 때에는 하드코딩 때문에 더 많은 시간이 소요될 수 있습니다.
😎
마무리를 하며
회사에서 소프트코딩, 하드코딩 단어가
자주 언급이 되므로
꼭 이 개념을 숙지해서
개발 할 때 도움이 되길 바랍니다 !
필요에 맞게 하드코딩, 소프트코딩을 사용하여
멋진 개발자가 됩시다 !
'WEB 지식 이것 저것' 카테고리의 다른 글
[WEB] 웹 3대 요소 - HTML, HTTP, URI (1) | 2024.01.06 |
---|---|
[WEB] HTTP 렌더링, 웹 브라우저 렌더링 과정 (2) | 2024.01.05 |
[WEB] 웹 브라우저 동작원리 와 과정 (2) | 2024.01.04 |
[WEB] HTTP 요청 데이터를 확인 하는 법 - httpbin.org 사용법 (0) | 2023.12.14 |
[Git] 소스트리(SourceTree)로 프로젝트 클론(Clone) 하는 방법 (2) | 2023.12.07 |