그래서 나는 꽤 큰 문자열을 가지고 있으며 더 커질 것입니다. 현재 1,539 자이며 향후 몇 가지 검색어를 추가로 예상합니다. 그래서 제가 처음으로 문자열을 만들었을 때 나는 7 개의 문자열 객체를 생성하고 그것을 모두 플러스로 연결하는 구식 방법을 사용했습니다.문자열 작성기 큰 문자열에 대한 단점
하지만 선생님이 돌아 왔을 때 기억하고 있던 것을 기억하고 그것을 바꾸고 문자열 작성기를 사용해보기로 결정했습니다. 유일한 문제는 이것을 사용하는 것에 관해 온라인에서 찾을 수있는 유일한 단점은 가독성이며 가독성이 그다지 좋지 않다고 생각하지 않습니다.
그래서 내 질문은 1500 자 이상의 좋은 아이디어 또는 나쁜 아이디어를 저장할 개체를 만드는 것입니다. 그리고 내 상황에 있다면 문자열, 문자열 작성기 또는 문자열 버퍼를 사용 하시겠습니까? 그리고 연설을 가독성에 저장하십시오. 그것은 단지 내 코드 일 뿐이며, 나는 그것을 읽는 유일한 사람이며 어려운 일이 아니므로 그것을 변수로 사용하지 마십시오. 고맙습니다!
StringBuilder builder = new StringBuilder(1600);
builder.append("SELECT stride.id AS link, user.userName, user.displayName, user.currentDefault, stride.content, stride.timestamp, stride.recipientView, \"stride\" as notType FROM user INNER JOIN stride ON user.id = stride.sourceUserId WHERE stride.recipientId = ? AND stride.sourceUserId != ? ");
builder.append(" UNION ALL ");
builder.append("SELECT stride.id AS link, user.userName, user.displayName, user.currentDefault, stride.content, strideLike.timestamp, strideLike.recipientView, \"strideLike\" as notType FROM user INNER JOIN strideLike ON strideLike.sourceUserId = user.id INNER JOIN stride ON stride.id = strideLike.strideId WHERE strideLike.recipientId = ? AND user.id != strideLike.recipientId ");
builder.append(" UNION ALL ");
builder.append("SELECT stride.id AS link, user.userName, user.displayName, user.currentDefault, strideComment.content, strideComment.timestamp, strideComment.recipientView, \"strideCommentMe\" as notType FROM user INNER JOIN strideComment ON user.id = strideComment.sourceUserId INNER JOIN stride ON stride.id = strideComment.strideId WHERE stride.sourceUserId = ? AND user.id != stride.sourceUserId ");
builder.append(" UNION ALL ");
builder.append("SELECT stride.id AS link, user.userName, user.displayName, user.currentDefault, strideComment.content, strideCommentLike.timestamp, strideCommentLike.recipientView, \"strideCommentLike\" AS notType FROM user INNER JOIN strideCommentLike ON strideCommentLike.sourceUserId = user.id INNER JOIN strideComment ON strideComment.id = strideCommentLike.commentId INNER JOIN stride ON stride.id = strideComment.strideId WHERE strideComment.sourceUserId = ? AND user.id != ? ");
builder.append(" ORDER BY timestamp DESC");
내가 원래 가지고 있었던 것. 그러나 쿼리의 변경 부분은 악몽이되었습니다. – gmustudent
여러 문자열을 병합하여 작성할 수 있습니다. 문자열 리터럴의 연결은 런타임 대신 컴파일 타임에 수행됩니다. – nhahtdh