I. Introdução
Não consegue se lembrar do código aprendido? Você não consegue se lembrar da maneira errada, você se lembra!
- Git : Ir ao banheiro não é chamado de ir ao banheiro, é puxar um galho!
- Soquete : O banheiro é o servidor, e o poço é a porta!
- Fila : Ligue para a fila quando for ao banheiro, primeiro a entrar, primeiro a sair!
- Zhan : Vá para a cozinha e chame Jin Zhan, o último a entrar primeiro a sair!
- Arquitetura : O layout de três quartos é chamado MVC, e o layout de quatro quartos é chamado DDD!
- Teoria : A estrutura do sistema está bem desenhada, e não há problemas com alguns bugs, ela pode ser alterada. Esta é a diferença entre Mao Keng e banheiro.
Exceto por uma pequena amostra, não me lembro dessa vez . O processo de programação e escrita de código e os exemplos de nossa vida diária são geralmente assim. Com objetos reais que podem ser tocados, será mais fácil entender a programação. , É difícil esquecer. Mas ele pode apenas rir enquanto escreve o código!
Além desses exemplos de aprendizado de energia positiva, vamos dar uma olhada no código tóxico a seguir!
2. O código é venenoso!
O código a seguir é bom para promoção e aumento de salário, mas não é bom para expulsão!
1. Nomenclatura do método
public List<UserInfo> queryBitchUserInfo(String req) {
return null;
}
- Índice: ★★★
- Desintoxicação: irmão mais novo deve ser escrever um nome do método de consulta do lote do usuário, os resultados do lote ( lote ), cadela escrita ( cadela )
- Comentário: A interface é escrita de manhã e as pessoas saem à tarde!
2. Melhor Classificação
public static void main(String[] args) {
int[] numbers = new int[]{2, 30000000, 1, 6, 40000000, 5};
for (final int number : numbers) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(number); System.out.println(number); } catch (InterruptedException ignore) {
} } }).start(); }}
- Índice: ★★★
- Desintoxicação: Sempre classifique por sono digital, quem acordar cedo dará a saída primeiro.
- Comentário: A ideia é muito estranha, se não fosse essa espera desse dia, o chefe não poderia chutá-lo!
3. Pequenos cérebros
@Test
public void test_idx_hashMap() {
Map<String, String> map = new HashMap<>(64);
map.put("alderney", "未实现服务");
map.put("luminance", "未实现服务");
map.put("chorology", "未实现服务");
map.put("carline", "未实现服务");
map.put("fluorosis", "未实现服务");
map.put("angora", "未实现服务");
map.put("insititious", "未实现服务");
map.put("insincere", "已实现服务");
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
map.get("insincere");
} System.out.println("耗时(initialCapacity):" + (System.currentTimeMillis() - startTime));
}
- Índice: ★★★★★
- Desintoxicação: Esta é uma função que define o negócio de armazenamento HashMap para realizar a chave e chama o serviço por meio da chave. Mas a chave aqui só é útil para insinceros, e as outras são serviços não implementados. Você vê algum problema? À primeira vista, não há nada de errado com este código, mas se você entendeu, há arsênico no código! Seu propósito é um, colocar todas as chaves em uma lista vinculada e colocá-las no HashMap, e colocar chaves úteis no final da lista vinculada, aumentando o demorado get! Primeiro de tudo, new HashMap <> (64); Por que inicializar 64 comprimentos por padrão? Como o comprimento padrão é 8, ao inserir elementos, quando o comprimento da lista vinculada é 8, a expansão e a árvore da lista vinculada serão avaliadas. Neste momento, a chave original será processada em hash e todas as chaves não podem ser transformadas em alta complexidade Lista vinculada. Em segundo lugar, todas as chaves são selecionadas deliberadamente, porque quando calculam o índice no HashMap, o valor do índice é 0, idx = (size-1) & (key.hashCode () ^ (key.hashCode ()> >> 16)), de modo que todas as chaves podem ser processadas no mesmo local para colisão. E a palavra insincero significa; insincero, insincero! Por fim, as 7 primeiras chaves são, na verdade, chaves inúteis e não têm efeito. Apenas a última chave tem serviço. Dessa forma, muitas dessas listas de colisão demoradas podem ser construídas no HashMap, é claro, o fator de carga de 0,75 deve ser atendido e o HashMap não deve ser expandido. O efeito geral é mostrado abaixo, a chave não é uniformemente hash;
- Comentário: Se você consegue escrever este tipo de código, o salário não é suficiente, aguardando a otimização do código para aumentar o salário!
4. Soma do Mistério
@Test
public void test_add(){
int num = 0;
for (int i = 0; i < 100; i++) {
num = num++; } System.out.println(num);
}
- Índice: ★★
- Desintoxicação: O resultado final de num é 0 e num ++ não tem efeito algum. Porque depois de ++, o resultado é usado primeiro e a operação ++ não atribuirá um valor. A escrita correta é: num = ++ num;
- Comentários: Esse tipo de erro é como dirigir em um sinal vermelho, variando de deduções e multas até ruína.
5. Fantasia
private boolean checkAge(int age ) {
boolean result;
if (age >18)
{ result=true;
} else {
result=false;
} return result;
}
- Índice: ★
- Desintoxicação: o código pode ser executado, mas pode ser otimizado para retornar idade> 18 anos.
- Comentário: Sua empresa atinge o desempenho com base no número de linhas de código? Sem formatação, desordenado ou dicas IDEA, o código é escrito para que as pessoas vejam! O que é isso!
6. Número de julgamento
public boolean isNumber(String str) {
try {
Integer.parseInt(str); return true;
} catch (Exception e) {
return false;
}}
- Índice: ★★
- Desintoxicação: Julgue se é um número, não lance uma exceção ou lance uma exceção. Isso pode ser julgado usando o kit de ferramentas StringUtils ou você mesmo pode escrever julgamentos regulares.
- Comentário: Este código está realmente queimado, use exceções para negócios. Isso não é dar cogumelos aos cães? Se o cachorro não está morto, você come cogumelos, você come goubaba.
7. Código robusto
public void neverStop(){
//一直循环
while (true) {
try {
//业务处理流程
} catch (Exception e) {
//抓到异常,不处理、不打日志、就是不要停,继续跑
continue ;
} }}
- Índice: ★★★
- Desintoxicação: embrulhe o código que pode lançar exceções com tryCatch, continue em execução e execute quando encontrar exceções. Se você encontrar uma exceção neste momento, precisará fazer algum processamento de processo, pelo menos, log e alarme.
- Comentário: O desenvolvimento de negócios é frequentemente usado para resolver processos anormais, assim como 80% da área de fricção de papel é para proteger as mãos. Como derrubar, vejo seu código, deve estar quebrado!
8. Otimização de desempenho
// APP首页查询,优化前
public void queryInitInfo(){
Thread.sleep(3000);
}
// APP首页查询,优化后
public void queryInitInfo(){
Thread.sleep(500);
}
- Índice: ★★★
- Desintoxicação: Não há nada para desintoxicar, um quilograma de Crane Dinghong adicionado a um gole de água!
- Comentário: Não posso comentar, vamos abri-lo quando você pegar!
9. Registros inúteis
// 规则引擎校验
public boolean ruleEngine(MatterReq req) { try {
// 业务流程
} catch (Exception e) {
logger.error(e); // 只打异常,不打入参信息
}}
- Índice: ★
- Desintoxicação: Somente exceções são inseridas no log, e nenhuma informação de parâmetro é inserida.Quando seu método tem um grande número de chamadas, é difícil localizar o problema rapidamente.
- Comentário: Da próxima vez, lembre-se de registrar o gerente de produto também e morram juntos!
10. Travessia demorada
@Test
public void test_LinkedList() {
// 初始化100万数据
List<Integer> list = new LinkedList<Integer>(1000000);
// 遍历求和
int sum = 0;
for (int i = 0; i < list.size(); i++) {
sum += list.get(i);
}
}
- Índice: ★★★★
- Desintoxicação: à primeira vista, pode parecer que não há problema, mas essa travessia e soma serão muito lentas. Principalmente por causa da estrutura de dados da lista vinculada, cada list.get (i) é pesquisado a partir do cabeçalho da lista vinculada. Ao contrário de ArrayList, LinkedList tem uma complexidade de tempo de O (n). Portanto, se você não sabe se a outra parte foi aprovada em LinkedList ou ArrayList, você pode realmente julgá-la por instância de lista de RandomAccess. ArrayList é implementado em acesso aleatório, mas LinkedList não. Você também pode usar o loop for aprimorado ou o Iterator para atravessar.
- Comentário: O alicerce não é forte, o chão treme! Com um pouco de conhecimento, eu coloco o ferro velho!
Três, resumo
O código bom é o mesmo, o programa ruim valoriza e aumenta o salário! Esses códigos tóxicos demonstraram vividamente os talentos excepcionais dos programadores e também suspeitaram seriamente que o dinheiro foi dado menos!