私はIP アドレスを検証する小さなプログラムを書きました。IP アドレス チェッカーに渡す前に、IP v4 アドレスの範囲やネットワーク マスクなどのメタデータを取り除きます。
IP アドレスのネットワーク マスクを削除する際、さらに検証するために、結果の IP アドレス (私はこれをベース IP アドレスと呼んでいます) とネットワーク マスクを個別の変数に入れる必要があります。
cutOffNetMask メソッドで行った方法で問題ないのか、それともジョブを分割する必要があるのか 疑問に思っていました
- ベースIPを抽出
- ネットワークマスクを抽出します
別々の方法に?
private Integer netMask;
私がcutOffNetMaskメソッドに設定する方法は最先端ですか、それともエレガントな方法はどのように見えますか?
スニペットは次のとおりです。
public class IPAddress {
private String base;
private Integer netMask;
private boolean ipRangeValid;
private boolean netMaskValid;
public IPAddress(String value){
ipAddress = value;
base = ipAddress;
base.replace(" ","");
if(isIPv6Address(base) == false){
if(hasNetMask(base) == true){
base = cutOffNetMask(base);
}
if(hasIPRange(base) == true){
base = stripOffIPRange(base);
ipRangeValid = ipRangeValid(octet1, octet2, octet3, octet4);
} else {
ipRangeValid = true;
}
}
}
private static boolean hasNetMask(String base){
return (base.indexOf("/") != -1);
}
private static String cutOffNetMask(String base){
netMask = base.substring(base.indexOf("/") + 1);
return base.replace(netMask, "");
}
private String stripOffIPRange(String base){
String[] octets = base.split("\\.");
base = "";
octet1 = new IPOctet(octets[0]);
base = base + (octet1.getBase() + ".");
octet2 = new IPOctet(octets[1]);
base = base + (octet2.getBase() + ".");
octet3 = new IPOctet(octets[2]);
base = base + (octet3.getBase() + ".");
octet4 = new IPOctet(octets[3]);
base = base + (octet4.getBase());
return base;
}