AX Dev Warehouse

Um blog dedicado ao desenvolvimento de soluções em Microsoft Dynamics AX
posts - 41, comments - 18, trackbacks - 40

Práticas e padrões: Métodos parmVariable()

Variáveis de classe no X++ não aceitam “access modifiers” e são sempre privadas. Ou seja, uma variável declarada no class declaration só acessivel dentro da própria classe.

No C#, ou no VB, nós temos as propriedades para dar acesso externo as variáveis de classe. Já no Java é comum criar método GetVariavel e SetVariavel para isto. No X++ o padrão é criar um método parmVariavel que oferece ao mesmo tempo acesso de leitura e de escrita na variável.

A classe Person abaixo, por exemplo, tem duas variáveis de classe: name e birthDate

class Person
{
    str     name;
    date    birthdate;
}

 

Se preciso expor estas variáveis para o mundo externo, faço um método parm como este:

public str parmName(str _name = name)
{;
    name = _name;
    
    return name;
}

O método recebe como parâmetro opcional o nome. Cujo o valor default é o nome atual. Veja como é fácil, alterar e ler a variável:

    Person person;
    ;

    person = new Person('José', 21\2\1998);
    person.parmName('João');

    print person.parmName();
    pause;

Mesmo inicializando o objeto com o nome ‘José’, consigo alterar o nome para ‘João’. Agora em alguns casos não quero permitir alteração da variável, apenas leitura. Veja por exemplo o método parmAge, ele retorna a idade, baseado na data de nascimento. Só que não recebe parâmetro, pois esta é uma variável que não quero alterar.

public int parmAge()
{;
    return yearDiff(today(), birthDate);
}

A leitura do método continua normal.

static void Job1(Args _args)
{
    Person person;
    ;

    person = new Person('José', 21\2\1998);
    person.parmName('João');

    print person.parmName();
    print person.parmAge();
    pause;
}

Como boa prática só devemos expor as variáveis somente quando realmente precisamos usar. Neste post explico um pouco melhor o porque desta prática.

Print | posted on Friday, January 18, 2008 12:03 PM | Filed Under [ X++ ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 8 and 3 and type the answer here:

Powered by: