Senior Developer копіпастив зі Stack Overflow. Чому так не варто робити
Анонімний блогер і розробник «The Secret Developer» поділився на своїй сторінці в Medium думкою про те, чому варто дуже обережно користуватися кодом, взятим в мережі, і чому senior developer взагалі не варто таке робити. Пропонуємо вам переклад блогу. Далі — слово автору.
У нас є senior розробники, і провели ревёю їхньої роботи.
Ми всі можемо робити промахи та помилки, але The Secret Developer були шоковані, коли побачили наступне.
Код
Я хотів розмістити в цій статті реальний код, який я бачив у запиті, але я хвилююся, що мою таємну особистість буде розкрито.
Замість цього я розмістив тут деякий код, який «схожий» на той, який я переглянув.
Повірте, це був справжній pull request, а не чернетка або гілка. Готовий до запуску у виробництво.
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService; //1
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
User user = userService.findById(id); //2
if (user == null) {
return ResponseEntity.notFound().build(); //3
}
return ResponseEntity.ok(user); //4
}
}
Коли розробник настільки лінивий, що копіює код, він викликає мою повагу. Ніхто з нас не повинен докладати більше зусиль, ніж насправді потрібно.
Однак, коли уникнення роботи заходить так далеко, що вони залишають в коментарях посилання на сайт, з якого вони вкрали код, то це вже занадто. Це вже зовсім інша річ. Це некомпетентність. Я можу лише уявити, наскільки добре вони протестували цей код і наскільки добре вони продумали своє рішення.
Ризики копіювання коду: Проблеми безпеки та ліцензування
У світі розробки програмного забезпечення спокуса скопіювати і вставити код з таких ресурсів, як Stack Overflow, завжди присутня. Це обіцяє швидке вирішення проблеми, миттєвий шлях крізь хащі проблем кодування.
«Як я вже пояснював вище, це також оголює некомпетентність відповідального програміста. Це свідчить про розробника, який надає перевагу швидкості, а не ретельності, і чия робота несе ризики для всіх учасників. Давайте розглянемо ці питання по черзі».
Ризики безпеки
Фрагменти коду, доступні в Інтернеті, не завжди перевіряються на безпеку. Вони можуть містити вразливості, починаючи від простих помилок і закінчуючи серйозними недоліками безпеки, такими як SQL-ін’єкції або вразливості крос-сайтового скриптингу. Інтеграція коду, який ви не розумієте, у кодову базу відкриває ваш проект для потенційних зловмисних атак.
Код, який працює некоректно
Коду з інтернету часто бракує контексту. Це фрагмент, рішення конкретної проблеми, відірваний від ширших міркувань безпеки.
Розробники можуть не помітити, як цей фрагмент взаємодіє з іншими частинами їхньої системи, що потенційно може створити лазівки в тому, що раніше було якісним додатком.
Чи відповідає код стандартам проєкту? Розробнику важко обґрунтувати, що це так, якщо по суті, він сам не писав код. Він може містити застарілі практики або не відповідати протоколам безпеки.
Ще гірше, зовнішній код може мати залежності, які «розробник» не врахував у процесі створення програмного забезпечення методом копіпасту.
Юридичні підводні камені
Це було зрозуміло вже давно. Код з Stack Overflow недоступний для використання в програмному забезпеченні з закритим вихідним кодом і повинен бути атрибутований. Якщо розробник цього не робить, вам потрібно поставити під сумнів його компетенцію в написанні коду, а також його етику.
Зниження ризиків
Щоб зменшити ці ризики, розробникам, особливо тим, хто займає керівні посади, вкрай важливо:
- Ретельно перевіряти та розуміти будь-який зовнішній код, який вони мають намір використовувати.
- Регулярно оновлювати та перевіряти залежності на наявність вразливостей безпеки.
- Забезпечити дотримання всіх відповідних ліцензій на програмне забезпечення та авторських прав.
- Розглянути можливість написання власного коду, де це можливо, особливо для критично важливих компонентів системи.
Висновок
Часто кажуть, що тільки дурні стрибають у воду. Коли ми копіюємо рішення з Інтернету, ми повинні переконатися, що ми продумали всі наслідки цього.
Кого я обманюю? Я думаю, що якщо ви це робите, то ви настільки некомпетентні, що взагалі не повинні працювати у сфері розробки програмного забезпечення. Senior developer? Я думаю, ти не можеш бути серйозним.
Favbet Tech – це ІТ-компанія зі 100% украінською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологіи та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: