Spiegare i concetti [chiuso]

1

Come posso spiegare un concetto quando non conosco il suo nome o una ragione formale per questo? Il motivo per cui lo chiedo è questo ...

Un nuovo programmatore ha entità con un titolo di proprietà nel suo sistema. Usa il titolo per ricavare percorsi di immagine. Poi abbiamo scoperto che i titoli non erano lo stesso dei percorsi effettivi. Il suo ambiente (più specificamente il suo server) non rende la custodia delle immagini insensibile e il mio gruppo di lampade non lo fa. Questo era fondamentalmente il problema.

Quando gli ho spiegato che sarebbe saggio non derivare il nome delle immagini dal titolo ma invece dovrebbe includere una proprietà entity.image-path che non ha capito ed è stato infastidito dal fatto che gli ho detto di cambiare il suo programma. Dice che può minimizzare il titolo mentre ricava il percorso delle immagini. Non aveva ancora notato che tutti i suoi titoli sono parole maiuscole e alcune delle immagini maiuscole e altre ancora inferiori, quindi la sua idea di trasformare il titolo non funzionerà.

Ma come posso spiegare l'idea generale che non avrebbe mai dovuto cercare di ricavare il nome di un file immagine da una stringa utilizzata per un titolo di pagina html e potrebbe essere modificato per ragioni di usabilità o seo senza sembrare comunque paternalistico. Questa accusa mi è stata fatta quando ho detto "ora sto programmando da un po 'e sono sicuro che dovrebbe essere fatto nel modo in cui so che dovrebbe essere fatto".

    
posta gerard 22.10.2015 - 13:22
fonte

2 risposte

4

Documenti di requisito e test unitari.

Puoi discutere fino alla fine dei giorni sull'architettura e sulle buone pratiche, ma è fondamentalmente un'opinione a meno che tu non sia d'accordo su alcuni principi fondamentali dai quali puoi discuterne.

La cosa su cui non si discute è "il programma soddisfa il requisito?" questo è semplicemente dimostrabile in un modo o nell'altro purché il requisito sia ben definito.

In questo caso potresti avere un requisito che dice:

  • 'Il titolo dovrebbe essere in grado di contenere qualsiasi carattere UTF8, inclusi spazi, virgolette singole, nuove linee, lingue straniere e accenti

e un altro che dice:

  • 'Il percorso del file deve contenere solo caratteri ASCII esclusi spazi bianchi ecc ecc e deve essere inferiore a 256 caratteri'

È quindi possibile scrivere un caso o un caso di prova per dimostrare che la soluzione soddisfa i requisiti. Se fallisce, devi cambiarlo. Se il trucco "pazzo" ad-hoc funziona, non lo fai.

    
risposta data 22.10.2015 - 15:46
fonte
0

Nel caso concreto, la cosa da fare è sottolineare che una soluzione è errata fornendo un caso in cui fa la cosa sbagliata. Questo è quello che hai fatto.

Ma se qualcuno aggiungesse un trucco ad-hoc che risolve questo caso, ma ovviamente fallirà per il prossimo caso leggermente diverso che potresti inventare? Hai ragione che per spiegare perché una soluzione ad-hoc non funziona nel caso generale, di solito dovresti cercare di trovare il nome del concetto che sei parlare e usarlo nel tuo argomento.

Nel tuo caso, il problema sembra essere con tipi di dati sottilmente diversi . Questo è un problema che si verifica particolarmente spesso con stringhe di caratteri e cose che sono quasi, ma non del tutto, come stringhe. In questo caso, il fatto che alcuni componenti del sistema distinguano il caso e altri no è stato il problema. In altri luoghi potrebbe essere il fatto che solo un certo sottoinsieme dei caratteri definiti è effettivamente permesso, e le cose non esploderanno fino a quando qualcuno non introdurrà uno dei personaggi "rari". (Ad esempio, UNIX ha un problema profondo con stringhe che funzionano bene finché non ci sono spazi bianchi in esse , e un problema ancora più profondo con stringhe che funzionano bene fintanto che né \ 0 né / è in loro .)

Poiché tali sottili problemi si verificano quasi sempre quando modellate qualcosa che non è in realtà una stringa completamente generale come una stringa, è quasi sempre una buona idea creare un tipo di scopo speciale che esegua tutto il controllo che è in realtà necessario per utilizzare un dato in modo sicuro e utilizzarlo al posto di una stringa non elaborata. Sfortunatamente, l'unico termine tecnico che conosco per il problema è "tipicamente scritto", ma questo descrive il problema piuttosto che la soluzione!

    
risposta data 22.10.2015 - 13:30
fonte

Leggi altre domande sui tag