Το πρώτο μου έργο ανοιχτού κώδικα iOS

Αυτή είναι η πρώτη φορά που εκτίθεμαι στην κοινότητα με το στυλ του κώδικα μου, νιώθω λίγο νευρικός και συγκινημένος ταυτόχρονα.

Ξέρω ότι ο κώδικάς μου δεν είναι τέλειος, αλλά ξέρω επίσης ότι για να αναπτυχθείς, πρέπει να βρίσκεσαι μερικές φορές σε άβολες καταστάσεις, ούτως ή άλλως.

Και επίσης, για να είμαι ειλικρινής, δεν ξέρω πού βρίσκομαι, όσο το iOS/Swift είναι παρόν, νιώθω ότι πηγαίνω στη σωστή κατεύθυνση.

Όταν βρίσκομαι να εργάζομαι σε έργα iOS, μερικές φορές βρίσκομαι στην κατάσταση να λαμβάνω κάποια δεδομένα από έναν διακομιστή και μόνο αφού έχω αυτά τα δεδομένα αμέσως, θα χρειαστεί να πάω σε άλλο τελικό σημείο για να λάβω άλλο υλικό.

Αυτό σήμαινε ότι έπρεπε να καλέσω σε μια ασύγχρονη συνάρτηση και εντός της ολοκλήρωσής της να κλείσει και μόνο τότε έπρεπε να τοποθετήσω μια άλλη ασύγχρονη κλήση, ναι, ήξερα ότι κάτι δεν πήγαινε καλά εκεί.

Στην προηγούμενη δουλειά μου εργαζόμουν ως προγραμματιστής υποστήριξης Node.JS, οπότε ήξερα ότι η ένθεση ασύγχρονων κλήσεων ήταν μια κακή πρακτική που ακόμη και οι άνθρωποι στον κόσμο της JavaScript έχουν το όνομα για αυτό ως κόλαση επανάκλησης.

Και υπάρχει μια μεγάλη βιβλιοθήκη που ονομάζεται async που θα μπορούσε κανείς να τη χρησιμοποιήσει για να αποτρέψει αυτήν την κακή πρακτική στο Node.JS/JavaScript (φυσικά αυτή δεν είναι η μόνη εναλλακτική, έχουν υποσχέσεις, γεννήτριες κ.λπ.)

Αλλά δεν είμαι στον κόσμο της JavaScript, είμαι στον εκπληκτικό κόσμο του iOS!.

Έτσι σκέφτηκα λίγο πώς θα μπορούσα να αντιμετωπίσω αυτήν την κατάσταση στο Swift, είδα ότι υπάρχουν μερικά εξαιρετικά πλαίσια όπως το RxSwift ή το FutureKit που θα μπορούσαν να με βοηθήσουν στο πρόβλημά μου, αλλά ένιωσα ότι ήταν πολύ προηγμένα για τα απλά μου πρόβλημα.

Γι' αυτό δημιούργησα αυτό το blog post προσπαθώντας να δώσω μια απλή λύση στο απλό μου πρόβλημα.

Και πρέπει να πω ότι η λύση μου ήταν προκατειλημμένη και ήταν τόσο πανομοιότυπη με το async και ήταν εντάξει, αρκεί να λυθεί το πρόβλημά μου σωστά;

Ήμουν στην κατάσταση που αντέγραφα συνεχώς τη λύση μου σε άλλα έργα, γι' αυτό αποφάσισα να τη διαθέσω ως βιβλιοθήκη σε κεντρικό σημείο όπως το Github.

Έτσι κατέληξα να δημιουργήσω αυτήν τη βιβλιοθήκη που ονομάζεται Ax με τον αρχικό μου σκοπό να έχω τη λύση μου διαθέσιμη για άλλα έργα μου, αλλά υποψιάζομαι ότι δεν είμαι ο μόνος που μπορεί να εκτεθεί σε αυτό το πρόβλημα των ένθετων ασύγχρονων κλήσεων στο Swift .

Και αν ενδιαφέρεστε να συνεργαστείτε στη βιβλιοθήκη Axe, μη διστάσετε να επικοινωνήσετε μαζί μου, σκοπεύω να εφαρμόσω περισσότερη λειτουργικότητα.

Θα ήθελα λοιπόν να μιλήσω για τη διαδικασία του τρόπου με τον οποίο δημιούργησα/ανέβασα τη βιβλιοθήκη μου στο Github και την έκανα διαθέσιμη σε cocoapod, αλλά αυτό θα μπορούσε να είναι για μια άλλη ανάρτηση, ενημερώστε με αν ενδιαφέρεστε, θα ήθελα να τη μοιραστώ.

Ευχαριστώ που με διαβάσατε.