본문 바로가기
반응형

상수6

[엘레강트 오브젝트] 3.4 충성스러우면서 불변이거나, 아니면 상수이거나 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 불변 객체 예시를 알아보자 정리 관련해서 생각해볼 내용 불변 객체 불변 객체의 잘못된 사고 방식 불변 객체의 메서드를 호출할 때마다 상수(constant)처럼 매번 동일한 데이터가 반환되리라 기대 다시 말해서 모든 불변 객체가 문자열 리터럴이나 숫자처럼 동작하리라고 생각 불변 객체의 정의에 따르면 적절해 보일 수도 있겠지만 결론적으로 이런 사고 방식은 틀렸다. 결과가 변하기 때문에 상수는 아니지만, 객체가 대표하는 엔티티에 충성하기 때문에 불변 객체로 분류된다. 객체의 정의는 다음과 같다. 디스크에 있는 파일, 웹 페이지, 바이트 배열, 해시맵, 달력의 월과 같은 실제 엔티티의 대표자 기본적으로 모든 객체는 식별자, 상태, 행동을.. 2023. 3. 22.
[엘레강트 오브젝트] 2.5 퍼블릭 상수(Public Constant)를 사용하지 마세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있다. 상수 잘못된 사용 어떻게 해결할까? 또 다른 예 정리 상수 상수를 사용하는 이유는 데이터를 공유하기 위한 목적이다. 그래서 public static final 을 사용한다. 하지만 실제 객체들은 어떤 것도 공유해서는 안되고 독립적으로 닫혀 있어야 한다. 아래 예시를 통해서 알아보도록 하겠다. class Records { private static final String EOL = "\r\n"; void write(Writer out) { out.write(rec.toString()); out.write(Recoreds.EOL); } } EOL 상수는 private으로 선언되어 있어서 Records 클래스 안에서만 사용되기 때문에 바람.. 2023. 3. 12.
[Java] 상수를 활용하자 상수의 활용 읽기 쉬운 코드를 작성하기 위한 노력 중의 하나로 매직 넘버 대신 상수를 활용하고 있습니다. 일각에서는 상수를 사용함으로 코드가 길어져서 오히려 가독성을 해치는 것이 아니냐고 하는 경우도 있습니다. 유지보수를 하는 입장에서 생각을 해본다면, 의미 있는 상수로 인하여 코드의 길이는 조금 길어졌지만 가독성은 있는 경우 매직 넘버로 인해 코드의 길이는 조금 짧아졌지만 무슨 내용인지 모르는 경우 후자보다는 전자의 경우가 조금 더 나은 상황이라는 생각이 듭니다. 후자를 선택해서 개발을 하다가 매직 넘버를 만나게 되었는데, 그 의미를 파악했다 하더라도 진짜 그 의도가 맞는지 담당자에게 확인해봐야 하는 커뮤니케이션 비용도 들어가게 됩니다. 사실, 매직 넘버 대신 상수를 잘 활용하기 위해서는 네이밍룰을 정.. 2022. 3. 20.
[Java] Enum의 활용 enum의 사용방법을 처음 알았을때.신기하고 편해서 정리하려고 한다. doc.https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html enum.열거형(enumerated type)이며, 서로 연관된 상수들의 집합.클래스로 생성 가능하여 필드, 메소드 등 상수의 역할을 넘어서 많은 역할 가능. 사용목적.서로 연관된 상수들의 집합을 이용하여서.가공 및 처리(메소드를 이용하여)가 필요한 경우의 사용. 사용방법.예시를 참고.웹 페이지에서 여러가지 날짜 포맷을 지원하는 경우. public enum DateFormat { /** * yyyyMMdd 문자열 형식 */ YYYYMMDD("yyyyMMdd") , /** * yyyyMMddHHmmss 문자열 형식 */ .. 2020. 5. 22.
[Java] 상수(Const)를 선언하자 상수라는 개념은 알고 있다해도. 잘 사용하지 않았었는데. 지금은 아니지만. 정말 개발적으로 능력있는 상사분의 소스를 많이 보게 되면서. 상수 선언에 대해서 필요성을 느꼈다. 개념. 프로그램이 실행되는 동안 변하지 않는 값이며 재정의가 불가능한 값. 목적. 나같은 경우에는 무분별한 하드코딩를 막기 위해서 공통된 상수 선언을 통해서. 재사용하는 것을 좋아한다. 아래와 같은 내용에 해당되면 상수를 사용하는 편. 1. 소스 코드내에서 한번 이상 사용할 것2. 변하지 않는 값 물론, 상수를 사용한다고 해도 하드코딩을 안하는 것은 아니다.(함정) 사용 방법. 공통 영역(package)의 상수만 관리하는 Class 생성 클래스ServiceConst(아래) public class ServiceConst { /** * .. 2020. 5. 15.
[Java] 접속한 IP를 구해보자 프로젝트를 진행 중. 접속한 사용자의 IP를 구하는 경우가 있었고. 그때를 기억하며 소스를 정리. 여기에 사용된 총 기술은 뒤로 나열하고. 소스 내용. /** * Client IP를 구한다. * * @param request HttpServletRequest 객체 * @return String 실제 사용자 IP * */ public static String getClientIp(final HttpServletRequest request) { String clientIp = ServiceConst.STRING_EMPTY; clientIp = request.getHeader("IPV6_ADR"); if( Strings.isNullOrEmpty(clientIp) || "unknown".equalsIgnoreC.. 2020. 5. 12.
반응형