10 Найбільш поширених помилок java-програмістів

10 Найбільш поширених помилок java-програмістів

Які помилки частіше за інших зустрічаються у новачків в програмуванні? Можливо, вони завжди плутають рівність (==) з присвоєнням (=), або з . Або ж, можливо, вони використовують неправильні роздільники в циклі for (for (int i = 0, i <5, i++) )?

Щоб відповісти на це питання, дослідники розглянули помилки більш ніж 250 000 Java-новачків з усього світу. Використовуючи велику кількість даних (вихідний код більш ніж 37 мільйонів компіляцій, якщо бути точніше), вони виявили найбільш поширені помилки студентів, вперше вивчали Java. Також вони з'ясували, як багато часу займала навчання на власних помилках. Результати виявилися вражаючими.

The Blackbox data collection project

Вивчення нової мови програмування - це завжди виклик, оскільки ви повинні навчитися виражати свої складні думки, використовуючи обмежену, формальну граматику. Природно, багато новачків роблять помилки при програмуванні. Щоб пролити трохи світла на те, які помилки найчастіше роблять новачки, дослідники з університету Кента (Великобританія) розглянули код, який був зібраний майже у 265 000 студентів по всьому світу.

Проект під назвою Blackbox data collection побудований на основі BlueJ, безкоштовної Java IDE, спроектованої спеціально для новачків. BlueJ намагається усунути бар'єри на шляху до успіху для новачків, наприклад, виділяючи початок і кінець блоку коду. Це полегшує студентам процес візуального сканування коду на наявність зайвих фігурних дужок. Ще одна особливість цієї IDE - це можливість перевірки об'єктів прямо під час роботи програми. Таким чином, це допомагає розумінню принципів роботи програми, а також налагодження.

10 найбільш поширених помилок початківців Java-програмістів

АльТадмрі і Браун були здивовані, виявивши, що ті помилки, які експерти і викладачі вважали найбільш поширеними, такими насправді не є.

Це може бути небезпечною тенденцією, заявили вони, так як найчастіше подібні помилки висвітлюються і навіть плекаються в підручниках.

С. Незбалансовані дужки, фігурні дужки або лапки, а також використання цих символів поперемінно, наприклад: while (a == 0].

I. Виклик методів з неправильними аргументами або типами аргументів, наприклад: list.get ( "abc").

O. Контрольний потік може досягти кінець non-void методу без повернення, наприклад:

А. Плутанина з операторами присвоєння (=) і порівняння (==), наприклад: if (a = b).

N. Ігнорування або відкидання значення, що повертається методу з non-void типом повернення, наприклад: myObject.toString (); .

B. Використання == замість .equals для порівняння рядків.

M. Спроба викликати non-static метод так, якби це був static метод, наприклад: MyClass.toString (); .

R. Спроба класу реалізувати інтерфейс, але відсутність реалізації всіх необхідних методів, наприклад: class Y implements ActionListener <> .

P. Виклик типів параметрів при виклику методу, наприклад: myObject.foo (int x, String s); .

E. Неправильна розстановка ком в умовах if. а також циклах for і while. наприклад: if (a == b); return 6; .

Найбільш часта помилка - це C (забуті дужки, помилки в їх розміщенні) - як раз те, чого намагається протистояти BlueJ, використовуючи підсвічування. Даний висновок може бути ознакою того, що помилки типу С будуть ще частіше зустрічатися в IDE, які не надають ніяких коштів для налагодження.

Дивно, але такі помилки не потрапили в ТОП-10:

D. Плутанина з використанням операторів «короткого замикання» ( і || ) І звичайних операторів логіки ( і | ).

J. Відсутність дужок після виклику методу, наприклад: myObject.toString; .

Q. Присвоєння змінній значення з типом, несумісним з типом змінної, наприклад: int x = myObject.toString (); .

F. Неправильні роздільники циклу for (використання коми замість крапки з комою), наприклад: for (int i = 0, i <6, i++) .

H. Використання ключових слів в якості імен змінних або методів, наприклад: int new; .

Скільки часу займає навчання на своїх помилках

Крім того, коли Браун і АльТадмрі вивчили, скільки часу потрібно, щоб студенти виправили помилку, стало ясно, що найбільш поширена помилка (помилка С) була також однією з найбільш бистронаходімих. Інші помилки було знайти важче. Серед таких помилок була плутанина між операторами і | або і || (Помилка D), використання == замість .equals для порівняння рядків (помилка B) і ігнорування або відкидання значення, що повертається методу з non-void типом повернення (помилка N). Вони залишалися непоміченими більш як 1 000 секунд (після чого спостереження, не тривало) або не були знайдені взагалі ніколи.

Медіана, що показує співвідношення час-виправлення (time-to fix), показана на малюнку нижче.

10 Найбільш поширених помилок java-програмістів

Схожі статті