Привет, я Молчаливый Ван Эр, программист ростом с Хуан Цзяджу и красивым, как Энди Лау. Чтобы улучшить свои навыки программирования на Java, я недавно изучил код, написанный мастерами на GitHub. Говорят, что следующая строка кода (от рук Даниэля) покорит ваших друзей и заставит их думать, что код, который вы написали, очень 6, приходите и наслаждайтесь им.
IntStream.range(1, 5).boxed().map(i -> { System.out.print("Happy Birthday "); if (i == 3) return "dear NAME"; else return "to You"; }).forEach(System.out::println);
Хотя у меня 10 лет опыта программирования на Java, честно говоря, мне стыдно, что этот код как кирпич на голове, что немного сбивает с толку. Я узнал о лямбда-выражениях, я узнал о потоках,forEach()Я тоже изучил метод, но у меня все еще есть небольшое несварение, чтобы втиснуть все эти знания в одну строку кода.
Я всегда чувствую, что эта строка кода должна быть написана в старомодном синтаксисе (до Java 7), например:
for (int i = 1; i < 5; i++) {
System.out.println("Happy Birthday " + (i == 3 ? "dear NAME" : "to you"));
}
Вау, красивый код, лаконичный и понятный! Не только я могу это понять, но даже новичок в Java, который только начинает. Вы знаете, код пишется для того, чтобы люди его читали.Если только вы можете его понять, только вы думаете, что это очень хорошо, а другие люди как бы в тумане, это не обязательно хороший код, хотя он вроде бы ходячий в авангарде технологий.
Как говорится, «с большой силой приходит большая ответственность». Java 8 предоставляет нам мощные возможности, а ее новые функции — эпохальные (новые возможности в версиях после Java 8 недостаточно ярки), включая лямбда-выражения и потоки Stream, с помощью которых мы можем писать лаконичный и эффективный код. Проведем неуместную аналогию: до Java 8 разработчики ездили на Santana, а после Java 8 — на Ferrari.
Но если навыки вождения не очень хорошие, Феррари тоже может стать Сантаной, а то и хуже. Возьмем предыдущий фрагмент кода, который казался цифрой 6. Это был плохой код — его было трудно понять, несмотря на использование новых методов.
До Java 8, если вы хотели писать функциональный код, вы должны были использовать библиотеку классов Google Guava, которая является отличной библиотекой классов с открытым исходным кодом (не чужой), которая может в определенной степени компенсировать недостатки собственной библиотеки классов Java. . Я видел этот совет на его вики, который очень дальновиден:
Чрезмерное использование идиом функционального программирования Guava может привести к многословному, запутанному, нечитаемому и неэффективному коду... когда вы идете на нелепые длины, чтобы сделать свой код «однострочным», команда Guava плачет.
Должны быть в состоянии понять, не так ли? Общий смысл в том, что если вы злоупотребляете функциональным программированием Гуавы, это приведет к утомительному, запутанному, нечитаемому и даже неэффективному коду; если некоторые разработчики намеренно «оптимизируют» несколько строк кода в одну строку, чтобы уменьшить длину кода Гуава даже будет плакать, играя с кодом.
Все, что я могу сказать, это то, что страшно быть хорошим парнем, который знает не только свои сильные стороны, но и свои слабости - и это ты, разработчик Гуавы. Что касается большого быка, упомянутого в начале, я не могу похвалить код, который он написал, я могу только сказать, что он слепо уверен в своих ослепительных навыках. По моему опыту, только небольшое количество крупных коров может сохранить рассудок и осознать проблему демонстрации своих навыков, стремясь к технологическим инновациям.
Я думаю, что совет на вики Guava также применим к Java 8, и хорошие технологии следует использовать правильно, а не злоупотреблять ими. Хорошо известно, что новые функции Java 8 можно использовать для сокращения избыточного кода, когда мы превращаем сложный анонимный внутренний класс в краткое лямбда-выражение — хороший пример.
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类,搞起来");
}
});
t1.start();
// 优化后
Thread t2 = new Thread(() -> {
System.out.println("Lambda 表达式,搞起来");
});
t2.start();
Видите ли, количество оптимизированного кода меньше, и он понятен с первого взгляда, и до его непонимания никто не доберется. Цель функционального программирования состоит не только в сокращении избыточного кода, но и в повышении производительности. Подразумевается, что неважно, сложен ли код, если он доступен и надежен. Цель программирования состоит не в том, чтобы создавать как можно меньше кода, а в том, чтобы создавать системы, которые легко поддерживать и которые будут производительными.
Например, если я стартую из Лояна и еду в технический салон в Чжэнчжоу, мне не нужно лететь, оптимальным вариантом будет высокоскоростная железная дорога и автомобиль. Видишь, что я имею в виду? Не связывайтесь с прибамбасами, практичность превыше всего.
Что ж, мои дорогие читатели и друзья, вышеизложенное — это все содержание этой статьи, а лучших программистов можно увидеть здесь.Оригинальность непроста, не просите пустой билет, пожалуйста, поставьте лайк этой статье, что будет моей сильнейшей мотивацией писать больше качественных статей.
Если вы считаете, что статья немного полезна для вас, пожалуйста, выполните поиск по запросу "Тихий король 2"Прочтите это в первый раз, ответьте [666】【1024] Я также тщательно подготовил для вас обучающие видео высокой четкости 500G (которые разбиты на категории), а также копии интервью, организованных техническими экспертами большой фабрики.Исходный код этой статьи был включен вОблако кода,портал~