TIL/0806/Javaプロジェクト設計
野球種目実習
外部ライブラリの使用
gradle : Build Tool
インストール
GroupId
ArtificatID
Version
1.数値と点からなる汎用バージョン形式(1.0、1.1、1.0.1、...)を使用します.
build.gradleは構築ツールを実行し、外部ライブラリを管理する場所です.
1. 필요한 라이브러리 검색
Maven Central Repository Search 2.Gradle関連コンテンツのコピーと貼り付け
追加
外部ライブラリの使用も重要な機能です
たとえば、Fakerライブラリで必要な機能を使用する
package com.programmers.java.baseball;
import com.github.javafaker.Faker;
import java.util.Arrays;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Faker faker=new Faker();
String title=faker.name().fullName();
System.out.println(title);
String test=faker.starTrek().character();
System.out.println(test);
long r=faker.number().randomNumber();
Integer [] nums=Stream.generate(()->faker.number().randomDigitNotZero())
.distinct()
.limit(10)
.toArray(Integer[]::new);
// .forEach(System.out::println);
System.out.println(Arrays.toString(nums));
// System.out.println("Hello world");
}
}
Lombokライブラリの使用
Lombok Gradleに関連するコンテンツを構築します.勾配に追加
Gradle
intellijpluginからインストール
Lombokを使用してコードを簡略化
package com.programmers.java.baseball;
import lombok.*;
// 롬북
@NoArgsConstructor //기본 생성자
@AllArgsConstructor //생성자
@ToString //toString
@EqualsAndHashCode // equals
@Getter // getter
@Setter // setter
// 총 통들어서 ==> @Data
@Data
public class User {
private int age;
private String name;
// public User(int age, String name) {
// this.age = age;
// this.name = name;
// }
}
package com.programmers.java.baseball;
import com.github.javafaker.Faker;
import java.util.Arrays;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
User user=new User(1,"a");
User user2=new User(1,"a");
System.out.println(user);
System.out.println(user.equals(user2));
user.setName("zzz");
System.out.println(user.getAge());
System.out.println(user.getName());
// 기본 생성자
User user3=new User();
System.out.println(user3);
}
}
設計1. Class Diagram
Race Conditionが発生する可能性
private BallCount ballCount(Numbers answer, Numbers inputNumbers) {
int strike=0;
int ball=0;
// 멀티 쓰레드 동작의 경우 strike와 ball 같은 경우 Race Condition이 발생 가능
answer.indexedForEach((a,i)-> {
inputNumbers.indexedForEach((n,j)-> {
if (a!=n) return;
if (i.equals(j)) strike+=1;
else ball+=1;
});
});
return new BallCount(strike,ball);
}
に感銘を与える
既存のjavaデザインコースはMainに重点を置いています
しかし、今回の講座を聞いた時、私たちは設計方法の重要性を感じました.
メンテナンスと拡張が容易
インタフェースとramda関数を使用するかどうかによって、コード(クリアコード)を簡略化できます.
Reference
この問題について(TIL/0806/Javaプロジェクト設計), 我々は、より多くの情報をここで見つけました https://velog.io/@sds1vrk/TIL-0806-자바-프로젝트-설계テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol