Skip to content

AXISJ JSDOC 작성법

tom-axisj edited this page Oct 29, 2014 · 1 revision

코드블럭을 사용할 땐 (```)를 입력하여 블럭을시작하고 (```)를 입력하여 블럭을 끝냅니다. 하지만 코드블럭안에 (```)를 표현할 수없으므로 (` ``)로 대체합니다. 실제 주석입력시엔 (```)로 대체 하십시요.

설명글에 다국어 표현은 <en></en>블럭으로 감싸서 영문을 입력해주세요

JSDOC3 규약을 준수하여 작성함을 원칙으로 합니다.

JSDOC 규약

1. 자료형의 사용

자료형은 브레이스 {} 로 감싸서 표현하고 @param, @returns, @member 뒤에 두어서 각각이 전달되거나 돌아오는 자료의 타입이 무엇인지 명시적으로 표현합니다.

{Number}, {String}, {Array}, {Object}, {Boolean}, {Undefined} 처럼 javascript 자료형이름을 첫번째 문자 대문자로 하는것을 원칙으로하고 사용자가 만든 오브젝트 Class를 표현 할 때도 {클래스이름} 와 같이 표현할 수 있습니다.

{jQueryObject}
{Number}
{String}
{Array}
{Object}
{Boolean}
{Undefined}
{Null}
{HTMLElement}
{WindowObject}
{Event}
..

자바스크립트의 자료형

2. 주석달기

주석은 클래스, 네임스페이스, 멤버, 메소드에 시작위치에 /** 으로 시작되는 주석을 넣어줍니다. 각 단위별 주석 사용법은 다음과 같습니다.

설명글에 다국어 표현은 <en></en>블럭으로 감싸서 영문을 입력해주세요

- 클래스

/**
 * @class myClass // 클래스이름
 * @classdesc 클래스설명
 * @extends AXJ // 부모클래스, 없는 경우 해당줄을 삭제합니다.
 * @version v1.1 // 클래스의 개발버전
 * @author [email protected] // 클래스 개발자, 단순버그픽스가 아닌 메소드 추가를 한경우엔 쉼표로 이름을 추가할 수 있습니다.
 * @logs // 개발이력을 간단히 "날짜 : [작업자] 내용"의 형식으로 기술합니다.
 *
 */

- 네임스페이스

/**
 * @namespace [{<type>}] <SomeName>]
 */

전역의 위치에 정적으로 선언된 변수가 있는 경우 사용합니다. 예를 들어 AXConfig이라는 정적변수가 선언되었다면

/**
 * AXISJ UI 등에 기본값으로 사용되는 설정 변수
 * @namespace {Object} AXConfig
 * @example
 ` ``
 AXconfig.weekDays = [{label:""},..];
 AXConfig.AXReq.contentType = "";
 // 처럼 기본값을 수정할 수 있습니다.
 // .net 에서 webMethod를 이용하여 개발할 때는 다음의 설정을 권장합니다.
 AXConfig.AXReq.okCode = "00";
 AXConfig.AXReq.contentType = "application/json; charset=utf-8";
 AXConfig.AXReq.dataSendMethod = "json";
 AXConfig.AXReq.resultFormatter = function () {
	return this.d.object();
 };
 ` ``
 */

처럼 선언할 수 있습니다.

- 멤버

멤버는 클래스의 멤버 혹은 네임스페이스의 멤버를 말합니다. 부모이름.멤버이름의 방식으로 이름을 표시해 줍니다.

/**
 * AJAX호출 큐
 * @member {Array} AXReqQue.que
 */

만약 멤버가 Object타입이라서 설명이 필요한 경우엔

/**
 * AXTree default config
 * @member AXConfig.AXTree
 * @example
 ` ``json
 AXTree: {
	fitToWidthRightMargin: 10,
	fitToWidth: false,
	pageSize: 10,
	pageHeight: 400,
	keyResult: "result",
	keyTree: "tree",
	keyList: "list",
	emptyListMSG: "목록이 없습니다."
}
 ` ``
 */

와 같이 내용을 기술해 줍니다.

- 메소드

메소드는 클래스의 메소드 혹은 네임스페이스의 메소드를 기술합니다.

/**
 * @method // 클래스.메소드명 or 네임스페이스.메소드명
 * @param {type} [optinalname=default] - desc
 * @param {(string|string[])} [somebody=John Doe] - desc
 * @returns {type} name
 * @description 설명
 * @example
` ``js

` ``
 */

샘플

/**
 * @method AXScroll.moveTo
 * @param {Number} x - scrollTop position
 * @param {Number} [y] - scrollLeft position // optional 파라미터이면 []로 감싸줍니다.
 * @param {Number} [y=0] - scrollLeft position // optional이고 기본값이 0 이면 이렇게~
 * @param {(string|string[])} [z=("John Doe"|["apple", "banana"])] - optional 파라미터로 문자열 or 문자열 배열이 올 수 있음
 * @returns {AXScroll}
 * @description 스크롤위치를 이동시킵니다.
 * @example
` ``
 myUIScroll.moveTo();
` ``
 */

- 사용안함

메서드 또는 클래스를 더 이상 사용하지 않는 경우 사용합니다. deprecated를 사용하는 경우 반드시 see를 같이 사용해서 대안을 제시합니다.

/**
 * @deprecated AXModal.openI
 * @see AXModal.open
 */