Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
니름은 마이크로서비스를 위한 인터페이스 정의 언어(IDL) 컴파일러이자 원격 프로시저 호출(RPC) 프레임워크입니다. 스포카에서 서비스 지향 설계(SOA)를 적극적으로 도입하면서 쓰기에 적합하도록 구현되었습니다.
제품을 개선하기 위해서는 코드를 고쳐야 합니다. 그런데, 고친 코드가 행여 제품을 망가뜨리는 것이 아닐까 망설이고 고민할 때가 많습니다. 단위 테스트가 있다면 제품을 안전하고 빠르게 개선할 수 있습니다. 하지만 서비스 지향 설계로 제품을 만들다 보면 여러 개의 서비스들이 서로 통신하게 됩니다. 그리고 다른 서비스에 통신하는 기능도 단위 테스트를 작성해야 합니다.
서비스 간 단위 테스트는 까다로운 처리가 많이 필요합니다: 단위 테스트 안에서 요청을 흉내 내기, 실제 서비스를 띄워서 단위 테스트에서 테스트용 서비스에 요청하거나, 또는 요청과 응답을 흉내 내기, 요청한 내용을 역직렬화하고 응답할 내용을 직렬화 하기 등… 니름을 사용하여 서비스를 작성하면 서비스의 인터페이스와 구현을 분리할 수 있습니다.
요청이나 직렬화 등의 작업도 니름이 대신 처리하므로 추상화됩니다. 따라서 단위 테스트를 쉽게 작성할 수 있습니다. 서비스 지향 설계에서 니름을 사용하여 단위 테스트를 작성하면서 느낀 장점과 이것이 기존 방법들과 어떤 차이가 있는지 공유하고 싶습니다.
Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
니름은 마이크로서비스를 위한 인터페이스 정의 언어(IDL) 컴파일러이자 원격 프로시저 호출(RPC) 프레임워크입니다. 스포카에서 서비스 지향 설계(SOA)를 적극적으로 도입하면서 쓰기에 적합하도록 구현되었습니다.
제품을 개선하기 위해서는 코드를 고쳐야 합니다. 그런데, 고친 코드가 행여 제품을 망가뜨리는 것이 아닐까 망설이고 고민할 때가 많습니다. 단위 테스트가 있다면 제품을 안전하고 빠르게 개선할 수 있습니다. 하지만 서비스 지향 설계로 제품을 만들다 보면 여러 개의 서비스들이 서로 통신하게 됩니다. 그리고 다른 서비스에 통신하는 기능도 단위 테스트를 작성해야 합니다.
서비스 간 단위 테스트는 까다로운 처리가 많이 필요합니다: 단위 테스트 안에서 요청을 흉내 내기, 실제 서비스를 띄워서 단위 테스트에서 테스트용 서비스에 요청하거나, 또는 요청과 응답을 흉내 내기, 요청한 내용을 역직렬화하고 응답할 내용을 직렬화 하기 등… 니름을 사용하여 서비스를 작성하면 서비스의 인터페이스와 구현을 분리할 수 있습니다.
요청이나 직렬화 등의 작업도 니름이 대신 처리하므로 추상화됩니다. 따라서 단위 테스트를 쉽게 작성할 수 있습니다. 서비스 지향 설계에서 니름을 사용하여 단위 테스트를 작성하면서 느낀 장점과 이것이 기존 방법들과 어떤 차이가 있는지 공유하고 싶습니다.
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)MIN SEOK KOO
이것이 자바다 Chap.14 람다식 Lambda expression(java) 발표용 PPT
간단하게 정리한 것.
이것이 자바다 책을 기반으로 작성한 강의용 PPT입니다.
부족한 게 많으니 쓰실 때에는 추가하셔서 쓰세요~
참고 자료 : 이것이 자바다
사진 첨부 : http://palpit.tistory.com/
자바 개발자가 파이썬 개발을 배우면서 실무에 활용하고 집필을 하면서 겪었던 경험담 및 생각을 코드와 함께 풀어본다. 자바에 익숙한 사람이 파이썬을 배우고 있거나, 자바와 파이썬의 사이에서 고민을 했던 사람들에게 비교를 위한 기본 정보를 제공한다. 더 나아가 컴파일 언어와 스크립트 언어의 차이점, 개발 생산성을 측정할때 간과하는 컴파일 시간 및 순수 코딩 시간에 대한 통찰을 이끌 생각이다.
5. 순수 함수가 아닌 코드
public class OOP {
public static void main(String[] args) {
Point p = new Point();
final int value = 5;
p.setX(10);
p.addX(value); // 15
p.setX(15);
p.addX(value); // 20
}
}
@Data
class Point {
private int x;
private int y;
public int addX(int i){
return x + i;
}
}
6. 함수형 스타일의 코드 (java.lang.Math)
public final class Math {
public static final double E = 2.718281828459045D;
public static final double PI = 3.141592653589793D;
private static long negativeZeroFloatBits = (long)Float.floatToRawIntBits(-0.0F);
private static long negativeZeroDoubleBits = Double.doubleToRawLongBits(-0.0D);
static double twoToTheDoubleScaleUp = powerOfTwoD(512);
static double twoToTheDoubleScaleDown = powerOfTwoD(-512);
private Math() {
}
public static double sin(double var0) {
return StrictMath.sin(var0);
}
public static double cos(double var0) {
return StrictMath.cos(var0);
}
public static double tan(double var0) {
return StrictMath.tan(var0);
}
7. 객체지향 프로그래밍은 움직이는 부분을 캡슐화하여
코드이해를 돕고,
함수형 프로그래밍은 움직이는 부분을 최소화하여
코드이해를 돕는다.
마이클 페더스
8. 순수함수로 작성되면 무엇이 좋은가?
1. 부작용(Side effect)이 없다.
2. Thread-safe 하다.
3. 테스트하기 편리하다.
10. @FunctionalInterface
public interface Runnable {
/**
* When an object implementing interface
<code>Runnable</code> is used
* to create a thread, starting the thread causes the
object's
* <code>run</code> method to be called in that separately
executing
* thread.
* <p>
* The general contract of the method <code>run</code> is
that it may
* take any action whatsoever.
*
* @see java.lang.Thread#run()
*/
public abstract void run();
}
new Thread(() -> {
System.out.println("람다식");
});
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("익명 클래스");
}
});
new Thread(new Runnable() {
private Object status;
@Override
public void run() {
System.out.println ("상태가 있는 익명
클래스");
}
});
Runnable 람다 예제
메소드 체이닝 기법을 많이 쓰는 이유 설명
객체와 상태에 의존해서 로직이 수행되는게 아니라 기본 자료구조들에서부터 시작함
고계 함수란, 함수를 다루는 함수를 뜻한다. 사실 함수형 언어에서는 함수도 '값(value)'으로 취급한다.
또 한번 상태를 가질 수 없는 함수형의 특징이 나온다.
함수형에서 람다는 객체나 함수가 아니라 단순히 값이다.
함수형 프로그래밍 언어는 어떤 연산도 정해진 순서로 계산되어야 한다는 것이 정의되지 않고 함수들의 입력과 출력이 서로 연결되어 있기 때문에 선언형이다.
프로그램을 좀 더 빠르게 만들 수 있기 때문에(이미 다 만들어 진것만 선언을 통해 쓰기 때문에)
컴퓨터가 연산되는 구체적인 작동 순서를 나열하지 않고, 알고리즘에만 집중 할 수 있다.
명령형 프로그램은 알고리즘을 명시하고 목표는 명시하지 않는 데 반해 선언형 프로그램은 목표를 명시하고 알고리즘을 명시하지 않는 것이다.
언어 자체에서 제공하는 캐시 기능이기 때문에 최적화된 성능으로 코드를 거의 바꾸지 않고 캐시 혜택을 누릴 수 있다.