LoginSignup
0
0

汎用性の高い処理を作る

Last updated at Posted at 2019-10-08

##汎用性ってむずかしい
入力された文字列を「,」で区切って配列にして個数を数えて100倍してコンソールに出力する処理

は?.java
package ha;

import java.util.Arrays;

public class Trash {

	private static final String HA_IMIWAKANNAI = ",asd,asdadas,asda,sdas,asdasd,,asdasd,,,asd,";

	public static void main(String[] args) {
		trash(HA_IMIWAKANNAI);
	}

	private static void trash(String str) {
		System.out.println(100 * Arrays.asList(str.split(",")).size());
	}
}

意味わかんないというか何の役に立つのかわからん

汎用性のかけらもないよね

いつつかうんこれ

てことで

##1つの処理でとめよう!
入力された文字列を「,」で区切って
配列にして
個数を数えて
100倍して
コンソールに出力する処理

改変.java
package ha;

import java.util.Arrays;
import java.util.List;

public class Trash {

	private static final String HA_IMIWAKANNAI = ",asd,asdadas,asda,sdas,asdasd,,asdasd,,,asd,";

	public static void main(String[] args) {
		trash(HA_IMIWAKANNAI);
	}

	private static void trash(String str) {
//		System.out.println(100 * Arrays.asList(str.split(",")).size());
		sysout(hundred(count(toArray(separate(str)))));
	}
	
	// 分割
	private static String[] separate(Object obj) {
		return obj.toString().split(",");
	}
	// リストに
	private static List<String> toArray(String[] str) {
		return Arrays.asList(str);
	}
	// 数える
	private static int count(List<String> list) {
		return list.size();
	}
	// 100倍
	private static Integer hundred(int num) {
		return num * 100;
	}
	// 出力
	private static void sysout(Object obj) {
		System.out.println(obj);
	}

}

分けすぎわろた

まぁ汎用性は上がってますよね
一部、他でも使えると思うので!

StringUtilを自作する人も多いんじゃないでしょうか

##Object型
これ便利よね
IteretorとかTとかSetとか、初心者はまだ知らないやつ、ほんと便利なので調べてみてほしいです

forをより汎用的にしたのがiterator
順番とか気を付けたListやMapなどのCollectionsがSet
なんでもいい型がT
Objectもなんでもおkなクラス

どうしても型の縛りで同じ処理を複数作らされたりとかする時は
是非こいつらを使って一括で行けないか考えてみましょ

ただ下手にOptionalを使ってnullを許容してしまうと
事故になりかねないので、注意しましょうね

汎用性ってスゴイ

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0