Sobes.tech
Middle

Ονομάστε συγκεκριμένα κριτήρια ποιότητας κώδικα.

sobes.tech AI

Απάντηση από AI

  • Αναγνωσιμότητα: Είναι εύκολο να καταλάβει κανείς τι κάνει ο κώδικας. Χρησιμοποιούνται νοήμονες ονόματα, ακολουθούνται οι κανόνες μορφοποίησης.
  • Διαχειρισιμότητα: Ο κώδικας είναι εύκολος στην τροποποίηση και διόρθωση σφαλμάτων χωρίς να εισάγονται νέες αλλαγές. Μονολιθική δομή, χαμηλή συσχέτιση.
  • Δοκιμασία: Ο κώδικας μπορεί εύκολα να καλυφθεί με αυτόματες δοκιμές. Οι συναρτήσεις και οι κλάσεις έχουν σαφώς ορισμένες ευθύνες.
  • Απόδοση: Ο κώδικας χρησιμοποιεί αποτελεσματικά τους πόρους (επεξεργαστή, μνήμη, μπαταρία). Δεν υπάρχουν "στενά σημεία".
  • Αξιοπιστία: Ο κώδικας λειτουργεί προβλέψιμα και είναι ανθεκτικός σε σφάλματα. Διαχείριση εξαιρέσεων, επικύρωση εισερχόμενων δεδομένων.
  • Επαναχρησιμοποίηση: Τα συστατικά του κώδικα μπορούν να χρησιμοποιηθούν σε άλλα μέρη της εφαρμογής ή σε άλλα έργα. Συμμόρφωση με τις αρχές SOLID.
  • Συμμόρφωση με πρότυπα κωδικοποίησης: Ο κώδικας συμμορφώνεται με τα αποδεκτά πρότυπα στην ομάδα ή στη βιομηχανία.
  • Τεκμηρίωση: Ο κώδικας (ή το API) περιγράφεται επαρκώς, αν απαιτείται.

Παραδείγματα:

// Αναγνώσιμος κώδικας:
public void processUserData(User user) {
    if (user.isActive()) {
        // Επεξεργασία ενεργού χρήστη
    } else {
        // Επεξεργασία ανενεργού χρήστη
    }
}

// Λιγότερο αναγνώσιμος κώδικας:
public void procUsr(User u) {
    if (u.getStat()) { // Τι είναι το getStat()?
        // κώδικας
    } else {
        // κώδικας
    }
}
// Δοκιμαστικός κώδικας:
class UserRepository(private val apiService: ApiService) {
    fun getUserById(userId: String): User? {
        return apiService.fetchUser(userId) // Η εξάρτηση μπορεί να μιμηθεί εύκολα για δοκιμές
    }
}

// Λιγότερο δοκιμαστικός κώδικας (άμεση δημιουργία εξάρτησης μέσα στη συνάρτηση):
class UserRepository {
    fun getUserById(userId: String): User? {
        val apiService = ApiService() // Δύσκολο να μιμηθεί
        return apiService.fetchUser(userId)
    }
}