XP (�G�N�X�g���[�� �v���O���~���O)


C++ �R�[�f�B���O�W��

C++ R[fBOW


���̃h�L�������g�̓I���W�i���� Java �R�[�f�B���O�W���� C++ �p�ɕύX�������̂ł��D

�I���W�i���Fhttp://www.objectclub.jp/community/codingstandard/CodingStd.pdf

�t�B�[�h�o�b�N�����}���܂��D
�t�B�[�h�o�b�N��: [email protected]

  1. ���j

    ���̃R�[�f�B���O�W���́C�\�t�g�E�F�A�J���v���W�F�N�g�ɂ����� C++ �ŃR�[�f�B���O����ۂ̃��[���C�����C����і��������̎w�j��񋟂�����̂ł���D
    �W������̕��j�́C�ǂ݂₷�������e�i���X���₷���R�[�h���������Ƃł���D���ۂ̃R�[�f�B���O�ɂ������ẮC�v���W�F�N�g�����o�[�S�������̃��[���ɍ��ӂ��Ă��邱�Ƃ��K�v�ł���D
    ���v���W�F�N�g�ɂ����ẮC���̃R�[�f�B���O�W�����J�X�^�}�C�Y���ėp���邱�Ƃ𐄏�����D

  2. �t�@�C���\��

    (1) �t�@�C����
    �����Ƃ��ăN���X�́A���̃N���X�� (�啶���������̋�ʂ��܂߂�) �� .h �t�@�C�� (�K�{) �� .cpp �t�@�C�� (�K�{�ł͂Ȃ�) �ɂ���D
    �A���A���[�J���ɂ����g�p����Ȃ� (�Ǐ��I��) �N���X�́C���̃N���X���g����O���[�o���ȃN���X�̃t�@�C���Ɋ܂߂ėǂ��D

    (2) �t�@�C���̈ʒu
    �v���W�F�N�g�̃��[�g �f�B���N�g�������߂�D�T�u �v���W�F�N�g�͂��̉��ɃT�u �f�B���N�g�����쐬����D

  3. �����K��

    (1) �����Ƃ��ďȗ��͍s��Ȃ� (�A���ȉ��̗�O������)

    (2) �X�R�[�v�i�ʗp�͈́j���������[�v���̃J�E���^�C�C�e���[�^�́Ci, j, k �Ƃ������O�����̏��Ɏg��)�D

    (3) �X�R�[�v���������O
    �X�R�[�v�������ϐ����́C�^���𗪂������̂��g���ėǂ��D
    ��F ServletContext sc = getServletContext();

    (4) �N���X��
    �擪�啶���D���Ƃ͋�؂��啶���D
    CapitalizedWithInternalWordsAlsoCapitalized

    (5) ��O�N���X��
    �Ō��Exception�Ƃ����N���X���D
    ClassNameEndsWithException

    (6) ���ۃN���X��
    ���ۃN���X���ɓK���Ȗ��O�������Ƃ��CAbstract ����n�܂�T�u�N���X����A�z�����閼�O��t����D
    AbstractBeforeSubClassName

    (7) �萔
    �啶���� �g_�h �ł‚Ȃ������́D
    UPPER_CASE_WITH_UNDERSCORES

    (8) ���\�b�h��
    �ŏ��������ŁC���Ƃ͋�؂��啶���D
    firstWordLowerCaseButInternalWordsCapitalized()

    (9) �t�@�N�g�����\�b�h(�I�u�W�F�N�g��new�������)
    X* newX()
    X* createX()

    (10) �R���o�[�^���\�b�h(�I�u�W�F�N�g��ʂ̃I�u�W�F�N�g�ɕϊ��������)
    X toX() const

    (11) �����̎擾���\�b�h
    X x() const
    X getX() const
    bool isEnabled() const

    (12) �����̐ݒ胁�\�b�h
    void setX(X value)

    (13) bool�ϐ���Ԃ����\�b�h
    is + �`�e���Ccan + �����Chas + �ߋ������C�O�P�������C�O�P������ + �����D
    bool isEmpty()
    bool empty() // ���߁I�f��ɂ���f�Ƃ��������I�ȈӖ��Ɏ��邽�ߗǂ��Ȃ��D
    bool canGet()
    bool hasChanged()
    bool contains(Object)
    bool containsKey(Key)
    ���R: if, while�����̏������ǂ݂₷���Ȃ�D�܂�true���ǂ���̈Ӗ���������₷���D

    (14) bool�ϐ�
    �`�e���Cis + �`�e���Ccan + �����Chas + �ߋ������C�O�P�������C�O�P������ + �����D
    bool isEmpty_
    bool dirty_
    bool containsMoreElements_

    (15) ���O�̑Ώ̐�
    �N���X���C���\�b�h����t����ۂ́C�ȉ��̉p��̑Ώ̐��ɋC��t����D

    add/remove
    insert/delete
    get/set
    start/stop
    begin/end
    send/receive
    first/last
    get/release
    put/get
    up/down
    show/hide
    source/target
    open/close
    source/destination
    increment/decrement
    lock/unlock
    old/new
    next/previous

    (16) �Ӗ����Ƃ�閼�O
    �ϐ�������������ǂݎ��閼�O���D�߁D
    ������: copy(s1, s2)
    �ǂ���: copy(from, to) ���邢��copy(source, destination)

    (17) ���Ӗ��Ȗ��O
    Info, Data, Temp, Str, Buf�Ƃ������O�͍čl��v����D
    ������: double temp = Math::sqrt(b*b - 4*a*c);
    �ǂ���: double determinant = Math::sqrt(b*b - 4*a*c);

    (18) �啶��������
    �啶���Ə������͕ʂȕ����Ƃ��Ĉ����邪�C����݂̂ŋ�ʂ���閼�O��t���Ă͂Ȃ�Ȃ��D

    (19) ���̑�
    ���̑��C�v���W�F�N�g�ɂ���Ă͈ȉ��̖�������p����ꍇ������D
    ���[�J���ϐ�:
    lower_case_with_underscore
    private/protected�ϐ�:
    suffixUnderscore_

    �� ����: ��‚̘A������A���_�[�X�R�A __ ���܂ޖ��O��C�A���_�[�X�R�A�Ŏn�܂肻��ɑ啶�����������O�C�O���[�o�����O��ԓ��ɂ�����A���_�[�X�R�A�Ŏn�܂閼�O�̑S�ẮC�����n���߂ɗ\�񂳂�Ă��邽�ߎg�p�ł��܂���D

  4. �K�C�h���C��

    (20) �R�[�f�B���O�X�^�C��

    �E�t�@�C�� �w�b�_�[��t����

    //////////////////////////////////////////////////////////////////////////////
    // ���e          �t�@�C���̐���
    // �쐬�E�C��    2001/12/01 ����
    // �C��          2002/07/01 ���� �C�����e
    // ���쌠 ��Ж� 2001-2002
    //////////////////////////////////////////////////////////////////////////////

    �E�C���f���g�͓I�m��
    �E�C���f���g�� 4 ������
    �E���s��X�y�[�X�̓�����ɓ��ꊴ������悤�ɁD

    #include <iostream>

    // �N���X�̐���
    class Stack
    {
    public:
        // �v�f�̒lj�
        // @param item �lj�����v�f
        void push(Object item) {
            if (itemCapacity <= itemCount) {
                // ...
            } else {
                // ...
            }
        }

        // �擪�v�f�̎擾�D�擪�v�f�͎�菜�����D
        // @return �擪�v�f
        Object pop() {
        // ...
            return top;
        }
    };


    (21) �����s
    ��s�͍ő�80���Ƃ��C����𒴂���ꍇ�͍s�𕪊�����D�����̎w�j�́C(1) ���[�J���ϐ��𗘗p�C(2)�J���}�ʼn��s�C(3)�D��x�̒Ⴂ���Z�q�̑O�ʼn��s�C�Ƃ���D
    ��:

    double length = Math::sqrt(Math::pow(Math::random(), 2.0) + Math::pow(Math::random(), 2.0));

    // ���j(1)
    double xSquared = Math::pow(Math::random(), 2.0);
    double ySquared = Math::pow(Math::random(), 2.0);
    double length = Math::sqrt(xSquared + ySquared);

    // ���j(2)
    double length = Math::sqrt(Math::pow(Math::random(), 2.0,
                                       Math::pow(Math::random(), 2.0);

    // ���j(3) return (this == obj
                                   || (this->parameter == obj->parameter
                                       && this->field == obj->field));

    (22) �����錾�s
    �N���X�C���\�b�h�̐錾�������ꍇ�C(1):/throw�߂ʼn��s�C(2) �J���}�ʼn��s�Ƃ���D
    ��:

    class LongNameClassImplemenation :
                    public AbstractImplementation,
                    public Serializable, public Cloneable
    {
        void longNameInternalIOMethod(int a, int b)
                    throw IOException {
            // �c
        }
        void longMethodSignature(int a, int b, int c,
                                                   int d, int e, int f) {
            // �c
        }
        // �c
    }

    (23) �N���X�O�̕ϐ��E�֐�

    main �֐��������C�����Ƃ��ăN���X�O���̕ϐ���֐��͎g��Ȃ��D

    (24) main �֐�

    main �֐��ł́C�����R�[�h�������Ȃ��D���������I�u�W�F�N�g������������̃��\�b�h�𐔉�Ăяo�������ɂ��Ă����D

    (25) public variable
    �C���X�^���X�ϐ��́C�ɗ�public�ɂ����C�Ó��ȃA�N�Z�X���\�b�h��݂��邱�ƁD
    ���R: �I�u�W�F�N�g�w���̕W���D�N���X�̓�����Ԃɏ���ɃA�N�Z�X������̂͂悭�Ȃ��D�������C�ȉ��̏��������ׂĖ������ꍇ�C�C���X�^���X�ϐ���public�ɂ��C���ڃA�N�Z�X�����Ă��悢�D
    l ���̃C���X�^���X�ϐ������̃C���X�^���X�ϐ��ƓƗ��ł���C�P�ƂŕύX����Ă������̐��������������Ȃ��D
    l �ǂ���ɂ��Ă��CgetX()/setX() ���\�b�h�������D
    l �C���X�^���X�ϐ��̎����������ɓn���ĕύX����Ȃ����Ƃ������t������D
    �܂��C��L�ɓ��Ă͂܂�Ȃ��ꍇ�ł��C�ɓx�ɑ��x���C�ɂ���ꍇ�́C���̌���ł͂Ȃ��D(�������C�T�d�ɃR�����g���邱��)
    ��: Stack�N���X�ɂ����āCitemCount������public�ɂ��Ă͂Ȃ�Ȃ����CPoint�N���X�ɂ�����x, y��public�ɂ��Ă�������������Ȃ�(�ɒ[�ɑ��x���C�ɂ���ꍇ, ex. Java3D �� Vector/Point �N���X)�D

    Stack stack;
    stack.itemCount = 79; // �����œ�����Ԃ�����Ă��܂��D

    Point point;
    point.x = 30; // ������Ԃ̐������͕���Ȃ��D

    (26) ������
    �����������Ăɂ��Ȃ�(�Q�Ƃ�null�ɏ���������Ă���Ƃ�)�D�܂��C�Q�x���������Ȃ��D

    ������F

    class PoorInitialization
    {
    private:
        static std::string name;

    public:
        PoorInitialization()
        {
            name = �ginitial_name�h;
        }
    };

    String PoorInitialization::name = "initial_name";

    ���R: �������Ɋւ���o�O���ŏ�������D

    (27) static �����o�[�ϐ��������
    static �����o�[�ϐ� (�N���X�ϐ�) �͋ɗ͔�����D(static const �ϐ��͏���)
    ���R: static �����o�[�ϐ��́C�Z�~�O���[�o���ƌ����ėǂ��D��蕶���ˑ��ȃR�[�h�������C����p�𕢂��������Ă��܂��D

    (28) const ���D��
    �N���X���̊֐��C�ϐ��C�����C�ꎞ�I�ȕϐ����킸 const �ɏo������̂� const �ɂ���D

    (29) private vs. protected
    private���́Cprotected���g�p���邱�ƁD
    ���R: private�͊m���ɂ��̃N���X�O����̎g�p���V���b�g�A�E�g�ł��邪�C�N���C�A���g���C���ׂ����`���[�j���O��subclass���ɂ���čs�����Ƃ��o���Ȃ����Ă��܂��D
    �ʖ@: private �����D��Ŏg���Dprotected �ɂ��Ă��܂��ƈȍ~�C�ύX���N�����Ƃ��ɂ�����p�����Ă���S�N���X�ɉe�����o�Ă��܂��D

    (30) get/set ���\�b�h
    ���łɃC���X�^���X�ϐ��ւ̃A�N�Z�X���\�b�hgetX()/setX() ���쐬����public�ɂ��邱�Ƃ͔�����D���̕K�v�����������C�����ƈӖ��̂��郁�\�b�h�ɂ���D
    ���R: �C���X�^���X�ϐ��́C���̃C���X�^���X�ϐ��Ɉˑ����Ă��邱�Ƃ������D�N���X�����̐�����������Ă͂Ȃ�Ȃ��D

    (31) virtual �֐�
    �I�[�o�[���C�h�����֐���f�X�g���N�^�� virtual �ɂ���D

    (32) �R�s�[
    �R�s�[�������N���X�ł́C�K�v�ɉ����ăR�s�[ �R���X�g���N�^�Ƒ�����Z�q���쐬����D
    �����Ȃ��N���X�ł́C�����I�ɂ�����֎~���邽�� private �ȃR�s�[ �R���X�g���N�^�Ƒ�����Z�q��������D

    (33) �ϐ��B��
    �X�[�p�[�N���X�̕ϐ����ƁC�����ϐ������g�����͔�����D
    ���R: ��ʓI�ɂ͂���̓o�O�ł���D�����Ӑ}������Ȃ�R�����g����D

    (34) public���\�b�h
    �N���X��public���\�b�h�́C�u�����̔��@�̃C���^�[�t�F�C�X�v��ڕW�ɁD������₷���C�g���������Ԉ���Ă������̐������͂����Ȃ��悤�ɐ݌v����D�܂��C�”\�Ȃ�Ό_��ɂ��݌v(Design by Contract)���s���C�N���X�̕s�Ϗ����Ƌ��Ƀ��\�b�h�̎��O�����������R�[�h�ŕ\������D

    (35) ��Ԏ擾�Ə�ԕύX�̕���
    ���\�b�h�́C�u1�‚̎��v���s���悤�ɐ݌v����D���ɁC��ԕύX�Ə�Ԏ擾�̂Q�‚̃T�[�r�X���P�‚̃��\�b�h�ōs��Ȃ��D��Ԃ�ύX���郁�\�b�h��return�l��void�ɂ���D Stack�̗�ł́C top() ��removeTop() ��2�‚̕����Cpop() ���ǂ��D
    ���R1: �P�‚̎����s�����\�b�h�̕���������₷��(Stack�̗�́C���p�̕��������ׁCpop() ���D�܂�邾��)�D
    ���R2: ���s���̐���C��O�̈��S�ۏ؂����₷��(�Q�l: C++�ł́Cpop()���\�b�h����O���S�ɏo���Ȃ����R�ŁC�W�����C�u�����ł�pop()�͒l��Ԃ��Ȃ��d�l�ƂȂ��Ă���)�D
    ���R3: �T�u�N���X���ɂ��g�������₷���D

    (36) ���\�b�h�̑��d��`
    �����̃^�C�v�ɂ�郁�\�b�h�̃I�[�o�[���[�h�͂Ȃ�ׂ�������(�����̐����Ⴄ���̂�OK�ł���)�D���ɁC�p���Ɨ��ނƖ��ł���D
    ��:
    �~ : draw(Line), draw(Rectangle)
    �� : drawLine(Line), drawRectangle(Rectangle)
    �� : draw(Shape)

    (37) �f�t�H���g�R���X�g���N�^
    �”\�Ȃ炢�‚ł��f�t�H���g�̃R���X�g���N�^(�������Ȃ�����)��p�ӂ���D

    (38) ���ۃN���X
    ���ۃN���X�ł́Cno-op �̃��\�b�h���������C�����I�� �������z�֐��Ƃ���D�܂��C���L�”\�ȃf�t�H���g�̎�����p�ӂł���Ȃ�C����� protected �Ƃ��C�T�u�N���X��1�s�ŏ�����������悤�ɂ���D
     
    (39) �錾�Ə�����
    ���[�J���ϐ��́C�����l�Ƌ��ɐ錾����D
    ���R: �ϐ��̒l�Ɋւ��鉼����ŏ�������D
    ������:

    void f(int start) {
        int i, j; // �����l�Ȃ��̐錾
        // �����̃R�[�h
        // ...
        i = start + 1;
        j = i + 1;
        // i, j���g��
    }

    �ǂ���:

    void f(int start) {
        // �����̃R�[�h
        // ...
        // �g���O�C�͂��߂Đ錾�Ə�����
        int i = start + 1;
        int j = i + 1;
        // i, j���g��
    }

    (40) ���[�J���ϐ��̍ė��p�͈�
    ���[�J���ϐ����g���񂵂�����C�V�������̂�錾���ď���������D
    ���R: �ϐ��̒l�Ɋւ��鉼����ŏ�������D
    ���R: �R���p�C���̍œK����������D
    ������:

    void f(int N, int delta) {
        int i; // �����l�Ȃ��̐錾
        for (i = 0; i < N; i++) {
            // i���g��
        }
        for (i = 0; i < N; i++) {// �܂�i���g��
            if (...) {
                break;
            }
        }
        if (i != N) { // �Ō�܂ʼn�������̔����i���g���Ă���
            // ...
        }
        i = N - delta*2; // �܂��܂��ė��p
        // ...
    }

    �ǂ���:

    void f(int N, int delta) {
        for (int i = 0; i < N; i++) {
            // i���g��
        }
        for (int i = 0; i < N; i++) {
            // �ʂ�i���g��
            if (...) {
                found = true;
                break;
            }
        }
        if (found) {
            // ...
        }
        int total = N - delta*2; // �ʂ̈Ӗ�����ϐ�
        // ...
    }

    �� �A���f�t�H���g�� VC++ �R���p�C���͂���ɑΉ����Ă��Ȃ��D

    (41) if/while�������� �g=�h
    if, while�̏����ɂ́C��� �g=�h ���g���Ă͂Ȃ�Ȃ��D
    ���R: �قƂ�ǂ̏ꍇ�C�o�O�ł���D����R���p�C���́C���̂悤�ȋL�q�Ɍx�����o���D

    (42) �L���X�g
    �L���X�g�͂ł��邾��������D�~�ނ𓾂Ȃ��ꍇ�� C++ �̐V�����L���X�g���g�p����D

    (43) ��O�N���X
    ��O�N���X�͑��I�Ȑ��i�������C���p����ƃv���O�����̗����ǂ݂ɂ������Ă��܂����Ƃ�F������D

    (44) �G���[
    �G���[���̏����� assert ���g���ׂ�����O�������g���ׂ����C���̕��@ (�߂�l�Ȃ�) ��p����ׂ������l�����C��ʂ��Ă�����p����D
    ����: ���[�U���̓`�F�b�N�Ȃǂ�assert���Ă͂����Ȃ��D�o�O��߂܂��邽�߂�assert����D

    (45) ���\�b�h�����̕ύX�͈�
    �����Ƃ��ă��\�b�h�̈����͓��͂ł���C�o�͂Ƃ��Ă͎g��Ȃ����ƁD���Ȃ킿���\�b�h�����ň����̏�Ԃ�ύX���郁�\�b�h���Ă΂Ȃ����ƁD�o�͈����ɐV���ȃI�u�W�F�N�g�������Ȃ�����(�”\�Ȃ�const�Ƃ���)�D

    ������:

    void moveX(Point p, int dx) {
        p.setX(p.getX() + dx); // ������ύX���Ă���(�Ȃ�ׂ�������)
    }

    void moveX(Point p, int dx) {
        p = Point(p.getX() + dx, p.getY());
        // ����͌Ăяo�����ɓ`���Ȃ�
    }

    ��O: �p�t�H�[�}���X���C�ɂ���ꍇ

    (46) ���\�b�h�����̖��O
    ���\�b�h�̈����́C�ǂ݂₷�����̂ɂ��邱�ƁD���ɁC�C���X�^���X�ϐ��Əd�Ȃ����ꍇ�Cthis�����p���C�����̓ǂ݂₷�����]���ɂ��Ȃ����ƁD

    ������:

    void reset(int x_, int y_) {
        x = x_;
        y = y_;
    }

    �ǂ���:

    void reset(int x, int y) { // �������� x_, y_ �ȂǂƂ��Ȃ�
        this->x = x;
        this->y = y;
    }

    (47) toString()
    toString() ���\�b�h�͉”\�Ȃ炢�‚ł��������邱�ƁD
    ���R: ���‚ł��v�����g�ł���D�f�o�b�O���e�ՂɂȂ�D

    (48) switch,if/else�̌J��Ԃ��͈�
    switch���ŕ��򂷂鏈�������ꂽ���ɂ́C�悭�Ȃ��݌v�̒��󂾂ƍl���C�|�����[�t�B�Y���Ŏ����ł��Ȃ����čl����D���ɓ����悤��switch��2�ӏ��ȏ㌻�ꂽ��C�K���|�����[�t�B�Y���CFactoryMethod�CPrototype �p�^�[�����Ń��t�@�N�^�����O���邱�ƁDif/else�̘A�������l�D

    (49) �R���N�V����
    �‹��������΁CC++ �W���̃R���N�V���� �N���X��p����D

    ���R1: ���Ȍ��Ř_���I�C��ѐ��̂��郁�\�b�h�����g����D
    ���R2: �W���R���N�V���� �N���X�̃C���^�[�t�F�C�X�ɂ��C�C���^�[�t�F�C�X��ύX�����Ɏ��������ւ��邱�Ƃ��”\�D
    ���R3: ��荂���ȃR�[�h��������(�”\��������)�D

  5. �R�����g

    (50) �R�����g
    public �ȃN���X�C�֐��C�ϐ��ɂ̓R�����g��t����D

    (51) �����R�����g
    �R�����g�������s�ɓn��ꍇ�́C�ŏ��̒Z���ꕶ�ʼn��������������������C���̌�ɒ����R�����g��t���邱�ƁD

    (52) // vs. /* */
    ���\�b�h��N���X�̓����I�ȃR�����g�́C/* */ ���C// ���g�p����D�����Ŕ��f���Ă悢�D1�s�R�����g�́C// ���g���������悢�D
    ��1:

    /*
    * �헪:
    * 1. �܂�node��T��
    * 2. clone����
    * 3. inserter��clone��lj��v��
    * 4. ����������Cnode���폜
    */

    ��2:

    int index = -1; // -1��invalid�Ȓl���Ӗ�����

    �Q�l: ���̕�������ɂ悢�D
    static const int INVALID= -1;
    int index = INVALID;


  6. �p�t�H�[�}���X

    (53) �܂��v��
    �p�t�H�[�}���X���P�͂܂��v������n�߂�D���Ă����ۂ��ł͂��߁D

    (54) new
    new�͎��Ԃ��|����D�w�r�[�ȃ��[�v�̒��� new ���J��Ԃ��Ă΂�邱�Ƃ��o���邾��������D

    (55) �R�s�[
    ����ȃI�u�W�F�N�g�̃R�s�[�͎��Ԃ��|����D�֐��̈������I�u�W�F�N�g�̏ꍇ�́C�l�n���Ƃ��� const �ȎQ�Ɠn���Ƃ���D

  7. ���̑�

    (56) �����ŐV�������O�ɑ��k
    ���l���쐬�����N���X�ɑ΂��邠�鑀�삪�V���ɕK�v�ƂȂ�Ƃ��C�����ł��̃N���X��extends���ĐV���ȃN���X���쐬������C���̃N���X���C���X�^���X�ϐ��Ƃ��Ď��ƒN���X���쐬������C�܂����̃N���X�̍쐬�҂ɑ��k���邱�ƁD�ėp�I�Ȍ`�ł��̗v�]�𖞂����Ă����΁C�S�̂��R���p�N�g�ɂł���D

    (57) ���G�Ȑ݌v�͈�
    �݌v�Ŗ������ꍇ�C�����̃P�[�X�̓V���v�������d������D
    ��̃����e�i�r���e�B�ɂ��V���v�����͏d�v�ł���D

    (58) �p�t�H�[�}���X�����͑����
    �ŏ�����p�t�H�[�}���X���C�ɂ����R�[�f�B���O������ׂ��ł͂Ȃ��D�ǂ݂₷���C�ێ�̂��₷����D�悷��D�p�t�H�[�}���X�͑��肵�Ă�����P����D

    (59) �g���b�L�[�ȃR�[�h�͈�
    ���σv���O���}�ɕ�����悤�ȃR�[�h�������D���Z�q�̏����C�������Ɋւ���K���ȂǁC�N�����K���������M�������ē������Ȃ��悤�ȉ�����������܂��C() ���g���ĉ��Z�����𖾊m�ɂ�����C�����I�ȏ��������s���������ǂ݂₷���D
    ������:

    return cond == 0 ? a < b && b < c : d == 1;

    �ǂ���:

    return (cond == 0) ? ((a < b) && (b < c)) : (d == 1);

    ������:

    // �P�ʍs�����邪�C���Ԃ������邵�N���ǂ߂Ȃ��D
    for (int i = 1; i <= N; i++)
        for (int j = 1; j <= N; j++)
            M[i-1][j-1] = (i/j)* (j/i);

    (60) 100%���������Ƃ͂Ȃ�
    �����ɏ�����Ă��邱�ƂɁC100% ��������K�v�͂Ȃ��D��������l���𐮗����C���k���邱�ƁD�\���ȗ��R�������ă��[������O��邱�Ƃ͂悭����D�R�~���j�P�[�V�������ł���`�[���̏����ƂȂ邱�Ƃ��C���̃R�[�f�B���O�W���̖ړI�ł���D

  8. �Q�l����

    Kenji Hiranabe, Java�R�[�f�B���O�W�� (�I���W�i��)
    http://ObjectClub.esm.co.jp/eXtremeProgramming/CodingStd.doc

    Copyright © 2000,2001 Eiwa System Management, Inc. Object Club Kenji Hiranabe 02/07/12