Naamconventies of directory-structuren

Ik ben PHP-programmeur, maar wat ik wil bespreken, wordt beïnvloed door Java.

Na het lezen van enkele artikelen over de Hongaarse notatie- en naamgevingsconventies van verschillende talen, heb ik bewezen hoe duidelijk de Java-naamgevingsconventie voor interfaces is, ik heb een vraag.

Gezien de case van de Object Collections, waarin we een abstracte klasse hebben genaamd AbstractCollection en de concrete klasse genaamd Lijsten , hoe moet ik een interface noemen voor lijsten ?

De vraag is dat er in de naamgevingsconventies van Java geen voorvoegsel of suffix is ​​voor interfaces, zoals ListsInterface of InterfaceLists .

Lists IS an Interface name and, obviously, at least in PHP, two files in same directory cannot have the same name of a class or interface.

Niet elke klas heeft een interface nodig, dat weet ik, maar wat als ik besluit over te stappen naar een programmeringsteam? De andere programmeurs kunnen mijn klassen gebruiken, maar ze mogen de klassenbestanden niet openen om te zien welke openbare methoden het biedt.

Alleen al door het lezen van de interface is alles duidelijk.

Het Directory Structure-punt kwam van de mogelijkheid om een ​​submap toe te voegen met dezelfde naam van de interface en daarbinnen het bestand met de betonklasse. bijv .:

/  
/Collections  
/Collections/Lists.php <-- Interface  
/Colection/Lists/Lists.php <--- Concrete Class  

Wat nu?

0

2 antwoord

Geef een interface en een klasse niet dezelfde naam. Nooit. Voor uw lezers.

Ik denk dat je specifieke probleem weinig te maken heeft met conventie, maar met een concreet naamgevingsprobleem lijkt Lijsten helemaal niet als een interface. Lijst doet. Maar in dat geval zou een implementatieklasse een meer concretere naam hebben, zoals List_DoublyLinked en List_SinglyLinked (of wat voor soort lijst u ook over hebt).

1
toegevoegd
Ik weet dat. Maar ik denk dat het het tegenovergestelde zou zijn. Lijsten (meervoud) vertegenwoordigen de interface, omdat alles dat deze uitvoert één enkele lijst is (enkelvoud). In het bijzonder houd ik niet van deze ClassesWithVeryLongName: P
toegevoegd de auteur Bruno Augusto, de bron
Kant-en-klare noot voor tumbleweeds die voorbij rollen zoals ik - met behulp van de letterlijke naam Lijst om aan te geven dat een definitie mislukt vanwege de reservering van het woord "lijst"; nogal ongelukkig.
toegevoegd de auteur Dan Lugg, de bron
@BrunoAugusto ClassesWithVeryLongNames zijn goed. Ze zijn beschrijvend. Als u code met naamomzetting gebruikt, kunt u er nog steeds naar verwijzen door kortere namen in uw code te gebruiken, door aliassen te definiëren;)
toegevoegd de auteur NikiC, de bron

Ik denk dat je de PHP-naamconventies in plaats van Java moet controleren.

http://framework.zend.com/manual/en/coding -standard.naming-conventions.html

Zend biedt een goede, bijna alle gevallen.

Symfony heeft een andere ( http://trac.symfony-project.org/wiki/HowToContributeToSymfony#CodingStandards ), heeft Pear een andere ( http://pear.php.net/manual /en/standards.php ) ook.

In jouw geval wil Zend alleen maar laten zien dat een interface een interface is, en dwingt je om een ​​achtervoegsel op je interfaces te zetten. Dus je hoofdstructuur zou moeten zijn van:

Collections/
Collections/ListsInterface.php
Collections/Lists/ListAbstract.php
Collections/Lists/MyList.php

Ik weet niet of dit bericht je vraag beantwoordt, maar ik hoop dat het helpt.

1
toegevoegd
In de laatste dagen las ik over verschillende Naming Conventions en Java was de elegantste die ik kon vinden. Ik probeer dergelijke voorvoegsels (of achtervoegsels) te vermijden, maar tot nu toe heb ik geen geluk. :(
toegevoegd de auteur Bruno Augusto, de bron