- •Ход работы
- •1. Провёл процедуру code review (оценки качества программного кода) для проекта из лабораторной работы 1(а-б).
- •Class/interface documentation comment (/**...*/)
- •Wrapping Lines.When an expression will not fit on a single line, break it.
- •Dead comments
- •Volatile long _resizers; // count of threads attempting a resize
- •Too large tests with multiple assertions.
- •If (entry.GetKey().Equals(Long.ValueOf(100))) {
- •Tests swallowing exceptions.
Tests swallowing exceptions.
public void testSerial() {
assertTrue ( _nbhs.isEmpty() );
assertTrue ( _nbhs.add("k1") );
assertTrue ( _nbhs.add("k2") );
// Serialize it out
try {
FileOutputStream fos = new FileOutputStream("NBHS_test.txt");
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(_nbhs);
out.close();
} catch(IOException ex) {
ex.printStackTrace();
}
// Read it back
try {
File f = new File("NBHS_test.txt");
FileInputStream fis = new FileInputStream(f);
ObjectInputStream in = new ObjectInputStream(fis);
NonBlockingHashSet nbhs = (NonBlockingHashSet)in.readObject();
in.close();
assertEquals(_nbhs.toString(),nbhs.toString());
if( !f.delete() ) throw new IOException("delete failed");
} catch(IOException ex) {
ex.printStackTrace();
} catch(ClassNotFoundException ex) {
ex.printStackTrace();
}
}
Arrange-Act-Assert. Structure the tests always by AAA. Never mix these blocks.
public void testIteration() {
assertTrue ( _nbhs.isEmpty() );
assertTrue ( _nbhs.add("k1") );
assertTrue ( _nbhs.add("k2") );
StringBuffer buf = new StringBuffer();
for( Iterator<String> i = _nbhs.iterator(); i.hasNext(); ) {
String val = i.next();
buf.append(val); }
assertThat("found all vals",buf.toString(),anyOf(is("k1k2"),is("k2k1")));
assertThat("toString works",_nbhs.toString(), anyOf(is("[k1, k2]"),is("[k2, k1]")));
}
Выводы: в ходе данной лабораторной работы я провёл процедуру code review проектов лабораторной работы 1а-1б и выбранного проекта на Github. Результаты анализа проекта на Github оказались неутешительными. Были замечены многочисленные нарушения как в самом исходном коде библиотеки так и в написанных к ней тестах. Что касается моих проектов, то в процессе code review были выявлены лишь нарушения в Java coding style и организации Java Docs.