1. 개발 표준 정의서 - wooncloud/RecruitSystem GitHub Wiki

개발 표준 정의서 개정 이력

개요

프로젝트 수행 과정에서 표준화된 개발 방법을 제정하기 위해, 개발 표준 가이드를 제시하여 프로그래밍 개발 및 품질의 일관성을 유지한다.

코딩 규칙을 정의하여 개발에 적용하여 코드의 가독성과 재사용성을 증가시키고, 개발 기간을 단축시켜 비용절감 효과를 얻을 수 있도록 한다.

관리자 측면에서 코드 유지보수를 용이하게 하고, 사용자 측면에서 일관된 기능과 사용성을 제공한다.

개발환경

  1. 개발 환경
    • Eclipse IDE for Enterprise Java Developers 2020-12-R Version
    • Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
    • Apache Tomcat 8.5(web module 3.1)
    • java jdk Amazon Corretto 11
  2. 버전관리 계획
    • 형상관리는 git을 이용하여 단위 개발 및 version 관리하며 서버는 github 서버를 이용한다.
    • 형상관리 서버의 관리 및 작업 내용 반영은 최종 개발 책임자가 작업한다.
  3. 데이터베이스 접근 계획
    • 모든 개발자는 하나의 데이터베이스 운영 서버를 공유하여 사용한다.
    • 데이터베이스의 접근은 WAS의 자체 Database Pooling 모듈을 사용하며, DB 리소스는 독립 적으로 획득할 수 없다.

네이밍 표준

Naming Style

  1. Pascal Case
    • 본 프로젝트에서 클래스명, 파일명, Web 파일명에 이 규칙을 사용한다.
  2. Camel Case
    • 본 프로젝트에서 JAVA, JS 의 메서드명, 변수명, HTML의 id 속성에 이 규칙을 사용한다.
  3. Upper Case
    • 본 프로젝트에서 static Class, Constants(상수)에 이 규칙을 사용한다.
    • 본 프로젝트 데이터베이스에 모두 이 규칙을 사용한다.
  4. Kebab Case
      • 하이픈으로 단어를 연결하는 표기법이다.
    • 예) header-container-div, section-center
    • 본 프로젝트에서 HTML, CSS의 class 속성에 이 표기법을 사용함.

패키지 명명 규칙

패키지 명은 3자리 이상으로 정의한다.

  • com.sng.gdrs
  • com.sng.gdrs.dto
  • com.sng.gdrs.comm
  • com.sng.gdrs.model
  • 컨트롤러 파일 정의
  • dto 파일 정의
  • 공통, 유틸 파일 정의
  • dao 파일 정의

자바 명명 규칙

  • 인터페이스는 식별자 앞에 I를 붙인다.
    • Ex) IMemberDao, IBoardService
  • DTO는 식별자 접미어로 Dto를 붙인다.
    • Ex) MemberDto, BoardDto
  • DAO는 식별자 접미어로 Dao를 붙인다.
    • Ex) MemberDao, BoardDao

데이터베이스 명명 규칙

  • 테이블
  • 필드
  • 제약조건
    • PK는 테이블명 + "_PK"를 붙인다. ANSWERBOARD_PK
    • FK는 테이블명 + "_FK"를 붙이고, 그 순서에 따라 뒤에 번호를 매긴다. CAREER_FK1, CAREER_FK2
  • 시퀀스
    • "테이블명_컬럼명_SEQ" 방식을 사용함.
    • MEMBER_IDX_SEQ

자바스크립트 명명 규칙

  • 파일은 사용되는 기능명으로 명명한다.
  • 예약어를 사용하지 않는다.

CSS 명명법

CSS 명명법은 BEM 방식과 OOCSS 방식을 혼용하면서 사용함.

  1. BEM
    • 개발, 디버깅, 유지보수를 위하여 가능한 한 명확하게 네이밍하는 것이 목표
    • 소문자, 숫자만을 조합
    • 조합은 하이픈(-)으로 연결하여 작명
    • 모든것이 클래스이고 중첩된 것은 없다.
    • 블록(block)
      • 형태(red, big)가 아닌 목적(menu, button)에맞게 결정해야 한다. (header,menu,search-form...)
      • 환경에 영향을 받지 않아야한다.(여백, 위치 설정x)
      • 태그, id선택자로 사용하면 안된다.
  2. OOCSS(Object Oriented CSS) 객체지향 CSS
    • 구조와 모양으로 분리

    • 반복적인 것은 별도로 분리

    • 콘테이너와 콘텐츠의 분리(의존적인 스타일 사용x) .title -> h2, h2.title

    • 네이밍

      • 가능한 짧고 간결하게 작성
      • 동작과 형태가 예상 가능하도록 명확히 작성
      • 형태보다는 목적의 의미를 작성
      • 구체적이지 않고 일반적으로 사용가능 하도록 작성
      <!-- 기존 방법 -->
      <a class="facebook_btn">Facebook</a>
      <a class="twitter_btn">Twitter</a>
      
      <!-- OOCSS 방법 -->
      <a class="btn facebook">Facebook</a>
      <a class="btn twitter">Twitter</a>

디렉터리 구조

Controller

  • AdminController : 관리자가 보는 페이지(Applicant Confirmation)
  • ApplyController : 지원하기(Apply), 지원결과보기(Apply results)
  • ErrorController : 에러페이지
  • RecruitController : 채용공고 관련 페이지 (Recruitment Announcement)
  • UserController : 회원 관리 페이지 (User Management)

Views

  • admin : 관리자가 보는 페이지(Applicant Confirmation)
  • apply : 지원하기(Apply), 지원결과보기(Apply results)
  • error : 에러페이지
  • recruit : 채용공고 관련 페이지 (Recruitment Announcement)
  • user : 회원 관리 페이지 (User Management)

CSS

  • admin.css : 관리자가 보는 페이지(Applicant Confirmation)
  • apply.css : 지원하기(Apply), 지원결과보기(Apply results)
  • error.css : 에러페이지
  • recruit.css : 채용공고 관련 페이지 (Recruitment Announcement)
  • user.css : 회원 관리 페이지 (User Management)

JS

  • admin.js : 관리자가 보는 페이지(Applicant Confirmation)
  • apply.js : 지원하기(Apply), 지원결과보기(Apply results)
  • error.js : 에러페이지
  • recruit.js : 채용공고 관련 페이지 (Recruitment Announcement)
  • user.js : 회원 관리 페이지 (User Management)

DTO, DAO, SERVICE

  • 모두 같은 패키지 안에 포함.

코드 구조

JSP 및 HTML

  • CSS Style Tag는 Header 태그 안에 있어야 하며, Title Tag 위에 정의한다.
  • 자바스크립트 Script 태그 중 src로 파일을 불러오는 Linked 방식은 Header 안에 정의하며, title tag 위에 정의한다.
  • 자바스크립트 Script 태그 중 html 태그에 작성하는 embeded 방식은 최하단
⚠️ **GitHub.com Fallback** ⚠️