-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathApp.java
More file actions
72 lines (47 loc) · 2.03 KB
/
App.java
File metadata and controls
72 lines (47 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package kr.springboot.examples.ex16;
import kr.springboot.examples.commons.Cart;
import kr.springboot.examples.commons.CoolRenderer;
import kr.springboot.examples.commons.Renderer;
import java.util.Objects;
import java.util.Optional;
/**
* Do Not Use Optional in Methods Arguments
* 메서드 인수에서 옵셔널을 사용하지 마세욧
*/
public class App {
public static void main(String[] args) {
App app1 = new App();
Cart cart = new Cart();
// Avoid
app1.renderCustomerAvoid(cart, Optional.<Renderer>of(CoolRenderer::new), Optional.empty());
// Prefer 1
app1.renderCustomerPrefer1(cart, new CoolRenderer(), null);
// Prefer 2
app1.renderCustomerPrefer2(cart, new CoolRenderer(), null);
}
// Avoid
public void renderCustomerAvoid(Cart cart, Optional<Renderer> renderer, Optional<String> name) {
if (cart == null)
throw new IllegalArgumentException("Cart cannot be null");
Renderer customRenderer = renderer.orElseThrow(
() -> new IllegalArgumentException("Renderer cannot be null")
);
String customerName = name.orElseGet(() -> "anonymous");
}
// Prefer 1
public void renderCustomerPrefer1(Cart cart, Renderer renderer, String name) {
if (cart == null)
throw new IllegalArgumentException("Cart cannot be null");
if (renderer == null)
throw new IllegalArgumentException("Renderer cannot be null");
String customerName = Objects.requireNonNullElseGet(name, () -> "anonymous");
}
// Prefer 2 (rely onNullPointerException)
public void renderCustomerPrefer2(Cart cart, Renderer renderer, String name) {
Objects.requireNonNull(cart, "Cart cannot be null");
Objects.requireNonNull(renderer, "Renderer cannot be null");
String customerName = Objects.requireNonNullElseGet(name, () -> "anonymous");
}
// Prefer 3 (avoidNullPointerExceptionand useIllegalArgumentExceptionor other exception)
// 나중에..
}