자바에서 메소드 구현 위치??

ckebabo의 이미지

자바에서 클래스의 메소드들을 보면...
static, abstract,
protected, private, public
등등의 메소드가 있습니다.

이것들을 클래스내에서 코드상에 어디에 위치시켜야 좋을지 확신이 스질 않아 질문을 올리게 되었습니다.
현재 제 생각은 다음과 같습니다.

abstract class FOO {
// 속성은 가장 위에
static properties...
protected properies...
private properies...
 
// static, normal(?), abstract 순서
// 같은 지정자이면 private, protected, public 순서
 
static private methods...
static protected mothods...
static public mothods...
 
// 생성자
public FOO()
 
private methods...
protected mothods...
public mothods...
 
abstract private methods...
abstract protected mothods...
abstract public mothods...
}

그런데 위와 같이 하다보니 지정자들끼지 함께하는 장점(장점인지는 모르겠지만)이 있지만, 의미적으로는 멀리 떨어져 있는 것들이 생기게 됩니다. 그래서 그런지 왠지 코드가 지저분해져 보이고 뭔가 마음에 걸리게 되더라구요...
혹시 노하우같은것이 있는가요? 아니면 클래스 설계를 특정 방법으로 함으로서 해결가능한 문제인가요?
bookgekgom의 이미지

전 그냥 제가 넣는 순서대로 넣는다능...

어차피 프로그램만들기 전에 UML 로 디자인 짜잖아요.

그것만 깨끗하게 계속 있으면 아무 문제 없는듯...

어차피 코딩은 구현할때만 쳐주는 거니까요.

디자인을 그린 종이만 깨끗하게 보관하는게 중요한듯...

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

M.W.Park의 이미지

머 절대적인 기준이 있는 것은 아니지만,
제 경우에는 의미를 중시하는 스타일로 쓰는 것을 목표로 합니다.
처음부터 순서대로 읽었을 때 이해를 도울 수 있는 배치가 가장 이상적이라고 생각합니다.

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

lateau의 이미지

일단 기존의 java 소스를 참고하시면 될 것 같습니다.
src.zip 안에 있는 몇 가지 소스를 보시면 많은 참고가 될 것 같네요.

Formatter, Templates 등등이 존재하는 것도 '규칙적이고 일관된 코딩'이 중요하기 때문이라 생각합니다.
혼자 코딩할 때도 통일된 규칙이 있다면 나중에 혹 다시 뜯어고칠 일이 있더라도 도움이 되겠지요.

- Why don't you come in OpenSolaris? I hope you come together.

--
I think to myself...what a emerging world.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.