Advertisement
Liliana797979

Exam guidlines

Mar 16th, 2022
951
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // 0.1 Отделете повече време да си прочетете условието, целта е не само да се прочете
  2. // а да се разбере, това ще ви спести адски много проблеми
  3. // 0.2 НЕ СПЕКУЛИРАЙТЕ с условието, не е мястото на изпита да изпадаме в спекулации, за
  4. // как трябва да е
  5. // 0.3 Не пробвайте нови неща на изпита, използвайте си подходите които са ви най ясни
  6. // и сте ползвали и тествали преди
  7.  
  8. // 1. Прочетете си пак условието, дума по дума, картинка по картинка ако трябва
  9. // 2. Ако е DOM задача, погледнете да не използвате неща които judge не разбира, ако
  10. // изпаднете в ситуации където при вас работи а в judge не, шанса е че ползвате нещо
  11. // от което judge не разбира
  12. // 3. Нулеви тестове - понякога в judge има повече нулеви тестове от колкото в условието,
  13. // но през нормалния екран не се вижда минали ли са или не, погледнете в details, ако имаме
  14. // нулеви тестове които не минават, може лесно да се ориентираме къде имаме грешка.
  15. // Ако задачата е DOM обаче, може да е объркващо да разберем грешката така че, ако не
  16. // разбирате от теста бързо къде е проблема, може да пропуснем тази стъпка
  17. // 4. Ако сме изхабили 20-30 минути в търсене на грешка, а ни остават още задачи за решаване
  18. // тук е време да оставим задачата до където е и да отидем да решим останалите,
  19. // после ще се върнем като сме изкарали точките си, ако сте решили всичко или се връщате
  20. // на задачата пак, изчистете всичко от мозъка си, може да вземете 1-2 мин почивка и почнете
  21. // пак от условието
  22. // 5. Може да ползваме същите подходи като при unit test-ването, все пак Judge прави
  23. // Unit testing на кода ни
  24. // 6. Тук вече може да спекулираме
  25.  
  26.  
  27.  
  28.  
  29. // 2 DOM
  30. // Лесен принцип по който да се водим, за да избегнем проблеми е:
  31. Array.from() // Винаги ползвайте "Array.from" върху DOM колекции, така дори и да деструкторирате и
  32. // т.н. по тях все ще работят
  33.  
  34. // DOM cheat sheet
  35. // Selecting DOM elements
  36. let elem1 = document.getElementById('test');
  37. document.querySelector('#test');
  38. document.querySelectorAll('#test li');
  39.  
  40. // Get/Set content
  41. elem1.value;
  42. elem1.textContent;
  43.  
  44. // Traversing DOM
  45. elem1.parentElement;
  46. elem1.children;
  47.  
  48. // Create element
  49. let createdElem = document.createElement('p');
  50.  
  51. // Adding to DOM
  52. elem1.appendChild(createdElem);
  53.  
  54. // Delete from DOM
  55. createdElem.remove();
  56.  
  57. // Events
  58. elem1.addEventListener('click', someFunc);
  59. e.target
  60.  
  61. // maybe
  62. e.preventDefault(); // Buttons in Forms have default behaviour, which we may need to prevent
  63. elem1.removeEventListener('click', someFunc);
  64.  
  65. // HTML Attributes
  66. elem1.setAttribute('name','myName');
  67. elem1.getAttribute('name');
  68. elem1.classList.add('test');
  69. elem1.classList.remove('test');
  70.  
  71. // Styling <=> CSS
  72. elem1.style.setProperty('font-weight','bold');
  73. elem1.style.getPropertyValue('font-weight')
  74.  
  75.  
  76. // 5 UNIT TESTING
  77. // Trivial cases
  78. // 1. All 'bad' exit conditions - 'throws' and 'returns' for special values signifying work could not be done
  79. //      ...1 test for each check leading to such a condition
  80. // 2. All 'good' exit condition - where the function received correct values and managed to complete its work
  81. //      2.a Some simple correct values we can think of - it's a good idea to check with at least 2 different  
  82. //          values so we don't fall for default return values
  83. //      2.b Edge cases:
  84. //          2.b.1 Edge cases that come from the data type we're using for example for Numbers - integers,
  85. //          floating point numbers, positive, negative, NaN, numbers above max allowed values etc. Alternatively for arrays it could be
  86. //          an empty array, an array with 1 element or an array with many elements
  87. //          2.b.2 Edge cases that come from the specification for example using a number as an index -
  88. //          check it's an Integer, check it's >= 0, check it's < length of whatever we should search in
  89. // Non Trivial Cases
  90. // 3. Check the source code to ensure we have full code coverage - that we have tests checking every row and
  91. // expression/statement in that row i.e. line coverage
  92. // 4. Non-trivial Edge cases - for every statement/expression try to think of a way it can be implemented to work
  93. // almost correctly, this will let us think of non-standard edge cases to test
  94. // For example if we're asked to check if something is a number, the correct check might be
  95. // typeof num === 'number', but someone could write it as !isNaN(Number(num)) which would introduce
  96. // edge cases with invalid logic, write tests to differentiate the correct implementation from the almost correct one
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement