From 50bf7cf2dc099ccd1d9a5b55e8782d273d4b3952 Mon Sep 17 00:00:00 2001 From: jaemin7666 Date: Sat, 6 Jun 2020 18:44:47 +0900 Subject: [PATCH] Refactoring operation name : extract method Refactoring object : makeNumeric(String digits) Reason : part of code has possibility to change so, make this part to method(changeNumericToSegment). And part of code is complicated boolean expression so, make this part to method(containNonNumericCharaters) --- .../main/java/io/nayuki/qrcodegen/QrSegment.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/java/src/main/java/io/nayuki/qrcodegen/QrSegment.java b/java/src/main/java/io/nayuki/qrcodegen/QrSegment.java index ab8201b..4953ab9 100644 --- a/java/src/main/java/io/nayuki/qrcodegen/QrSegment.java +++ b/java/src/main/java/io/nayuki/qrcodegen/QrSegment.java @@ -78,20 +78,28 @@ public final class QrSegment { * @throws NullPointerException if the string is {@code null} * @throws IllegalArgumentException if the string contains non-digit characters */ - public static QrSegment makeNumeric(String digits) { + public QrSegment makeNumeric(String digits) { Objects.requireNonNull(digits); - if (!NUMERIC_REGEX.matcher(digits).matches()) + if (containNonNumericCharaters(digits)) throw new IllegalArgumentException("String contains non-numeric characters"); BitBuffer bitBuffer = new BitBuffer(); + changeNumericToSegment(digits, bitBuffer); + return new QrSegment(QrSegment.Mode.NUMERIC, digits.length(), bitBuffer); + } + + public static void changeNumericToSegment(String digits, BitBuffer bitBuffer) { for (int i = 0; i < digits.length(); ) { // Consume up to 3 digits per iteration int n = Math.min(digits.length() - i, 3); bitBuffer.appendBits(Integer.parseInt(digits.substring(i, i + n)), n * 3 + 1); i += n; } - return new QrSegment(Mode.NUMERIC, digits.length(), bitBuffer); } + public static boolean containNonNumericCharaters(String digits) { + return !QrSegment.NUMERIC_REGEX.matcher(digits).matches(); + } + /** /** * Returns a segment representing the specified text string encoded in alphanumeric mode.