반응형

메서드

    문자열 정수를 int 형 정수로 변경하는 atoi 함수를 자바로 구현

    C언어에서 제공하는 atoi 메서드를 자바로 구현해보자. 1234567891011121314151617181920212223242526public class Main { public static void main(String args[]) { atoi("20"); } public static int atoi(String str) { int radix = 10; byte[] temp = str.getBytes(); int result = 0; for(int i=0;i

    Java8 메서드 레퍼런스

    메서드 레퍼런스 - 메서드 레퍼런스는 이름과 동일하게 메서드를 대상으로 한 람다식의 간략형이며, 메서드 참조를 나타내는 예약어로서 (::)를 사용한다. 다시 말해서 메서드 레퍼런스는 말 그대로 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불 필요한 매개 변수를 제거하는 것이 목적이다. - 메소드 참조의 예와 그에 대한 람다식은 다음과 같다. 기본 구조 String::valueOf x -> String.valueOf(x) Object::toString x -> x.toString() x::toString () -> x.toString() 왼쪽은 메서드 레퍼런스이고 오른쪽은 람다식이다. 메서드 레퍼런스의 3가지 형태 :: 연산자는 객체 또는 클래스와 메서드 이름을 구분하며, 세 ..

    메서드- 규칙 40 메서드 시그니처는 신중하게 설계하라.

    메서드를 설계할 때 주의해야 할 부분과 좋은 개선 방안에 대한 이야기를 살펴보겠다. 1. 메서드 이름을 신중하게 고르라. - 개발을 진행하면서 어려운 부분중에 네이밍 규칙이 꼽히는 것 같다. 메서드뿐만 아니라 변수를 선언을 할 때에도, 이름을 지어야하는데 쉽지 않은 것 같다. - 일관성을 유지해야하고, 일반적인 이름을 사용하지 않아서 혼돈을 격을 수 있는경우를 피해야한다. 2. 편의 메서드(convenience method)를 제공하는데 너무 열 올리지 마라. - 자주 사용하는 메서드를 정의하기 위해서 우리는 CommonUtil등에 정의를 하여 공통으로 사용할 수 있도록 하는경우가 많다. - 하지만 이는 유지보수, 테스트와 같은 여러 측면에서 번거로움이 생길 수 있기에 그럴지 모르겠다면 빼버려라. 3. ..

    메서드- 규칙 38 인자의 유효성을 검사하라.

    만약 메서드에서 파라미터 값으로 전달되는 값을 제한해야 하는 경우 어떤 값이 들어오면 시스템이 죽거나, 잘못된 데이터가 나온다는 것을 기재해 놓아야 한다. 그렇지 않으면 심각한 문제가 발생될 수 있다. 그렇기 때문에 몇 가지 안전장치를 마련해야 한다. 방법 - 만약 인자 유효성을 위반하는 경우는 Javadoc의 @throw 태그를 사용하여 문서화 해야 한다. 1234567/** * * @throw ZeroDivisionException (0으로 나누었을 때)*/public int getData() { return 222/0;}Colored by Color Scriptercs - assertion을 이용하여 인자 유효성 체크할 수 있다. - assertion은 항상 참이 되어야 한다. 만족되지 못하면 As..

    제네릭 - 규칙 27 가능하면 제네릭 메서드로 만들 것

    클래스를 제네릭 하는 것도 많은 혜택을 볼 수 있지만 (규칙 26) 메소드를 제네렉 자료형으로 사용하는 것 또한 많은 혜택을 볼 수 있다. row type으로 사용하였을 경우에는 형안전성 문제때문에 다음과 같은 오류가 발생한다는 것을 저번에 규칙에서 확인을 했었다. 이런 문제를 형인자를 메서드에 추가로 선언하여 메서드를 구현하면 형안정성을 보장받을 수 있다. 출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 규칙27 인용.

    모든 객체의 공통 메서드 - 규칙 10 toString은 항상 재정의하라

    toString 재정의를 하지 않은 경우 기본으로 제공되는 toString을 사용하게 될 경우 @ 기호와 16진수로 표현된 해시코드가 붙은 문자열이 반환된다. 이는 사용자가 원하는 정보가 아니므로 사용자는 해당 객체가 원하는 형태로 문자열을 반환할 수 있도록 재정의를 해놓으면 조금 더 유용하게 사용 할 수 있다. 일반적으로 toString 메서드를 재 정의하여 사용하는 경우에는 객체 내의 중요 정보를 전부 담아 반환해야 한다. 또한 toString를 재정의 하였을 경우에는 해당 내용에 대한 주석을 상세하게 기입해 놓아야 한다. 12345678910/* * 모든 객체의 멤버 변수에 대한 데이터를 반환한다. * * a는 첫번재, b는 두번 째 값이다. */ @Override public String toSt..

    템플릿 메서드 패턴 (Template method)

    템플릿 메서드 패턴에 대해 알아보기 위해 먼저 문제의 소지가 있는 상황을 알아보자. [예시] 만약 특정 제품의 모터를 동작시키고자 할 때 현재 모터가 동작중인지, 작업장에 문이 열려 있는지 확인하고 동작하도록 하는 로직을 다음과 같이 만들어보자 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293package template; public class Door { private DoorStatus doorStatus; public DoorStat..

    팩토리 메서드 패턴 (Factory method)

    팩토리 메서드 패턴은 객체의 생성 코드를 별도의 클래스/메서드로 분리하는 패턴이다. 이로써 특정 기능의 구현은 개별 클래스를 통해서 제공을 하도록 설계를 하면서 호출하는 메서드 코드의 중복된 코드 발생과 기능 변경으로 인해 자주 변경되지 않도록 하기 위해서 사용하는데 효과적이다. 다음 예를 살펴보자. 여러 엘레베이터 조작을위해 다음과 같이 구성이 되어있다고 가정해보자. 엘레베이터의 층수를 관리하는 ElevatorManager 클래스 각 엘레베이터 클래스 ElevatorController 클래스 스케줄 클래스 ThroughputScheduler 클래스 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748..

반응형