A linguagem a ser adotada é o inglês, todas as variáveis, métodos, funções, nomes de arquivos, etc. devem usar terminologias em inglês, mantendo assim uma linguagem universal e sem misturas.
Exemplos:
public ResponseEntity<ReleaseResponse> unrelease(
@PathVariable final String accessGrantUuid,
@PathVariable final String sessionId
) {public enum LoginStatus {
IN_PRODUCT,
IN_PLATFORM,
AVAILABLE;
}Em vista de manter todos os arquivos com mesmo padrão, seja visual, charset ou de sistema. Fica definido as seguintes normativas:
- charset em
utf-8 - Identação com tamanha de 4 espaços
- Edentação usando espaços (diferentes editores e ate mesmo o terminal, podem ter tamanhos diferentes para o
tabignorando um arquivo de regras inclusive; com espaço isso não ocorre). - Termino de linha usando a padrão linux
LF(os servidores são em linux)
Arquivo padrão do .editorconfig (recomenda-se que a IDE usada tenha suporte):
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false- Estamos trabalhando com uma linguagem compilada,
Java. - Estamos usando transpiladores no front
grunt, ou framework com buildangular,react.
Com base nestes dois preceitos, recomenda-se clareza na definição de variáveis, classes, métodos, funções, etc. já que no fim estes são convertidos pelo motor de build e não terão grande impacto na performance. Evite colocar nomes subjetivos ou sem significado, assim como siglas que possam ter duplo sentido.
Exemplo de problemas:
/* Não fica claro que componente é esse */
class NewComponect extends React.Component<Props, States>{/* Estas propriedades são do que? */
interface Props {
name: string;
age: string;
permissions: Permission[];
}// Act = account, action, activity
public void createNewActToUser(User user){- Em vista de aumentar a legibilidade do código.
Métodos que possuam múltiplos parâmetros, devem quebrar cada parâmetro em uma linha com tabulação simples.
private void validateUserRoleCreationByApiUser (
Long apiUserId,
Integer productId,
UserRoleEntity userRoleToBeCreated
) {@PutMapping("/user")
public User updateUserInAdministrativeArea(
@RequestHeader(name="X-APOLO-USER-ID") Long userLoggedId,
@RequestBody final User user
) {
return userService.updateUserInAdministrativeArea(userLoggedId, user);
}Assim como para tags com múltiplas propriedades.
<a
id="button-conectar-cadastro"
href="#/register"
type="button"
class="btn btn-default-americanas btn-block"
ng-bind="components.get('text-btn-cadastro').value"
></a>
<input
id="password"
name="password"
ng-model="auth.password"
type="password"
class="form-control input-md"
placeholder="{{components.get('text-senha').value}}"
required
/>Na mesma linha de raciocínio chamadas em "chain" devem ser quebradas em multiplas linhas
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("br.com.mobicare.apolo"))
.paths(PathSelectors.any()).build()
.apiInfo(apiInfo());
}A palavras reservadas True, False, Null, devem ser escritas em minusculo.
true
false
nullContantes devem ser escritas com todas as letras em maiúsculo, separadas por underline "_"
PROJECT_VERSION = '0.07';
DAY_OF_THE_WEEK = 7;
API_URL = 'https://...';