W angielskim stylu w ostatnich dniach wyszła nowa, ulepszona wersja zbioru można nazwać Best Pratcices dla SharePoint.
Jeżeli nie śledziliście jej wcześniej, to warto pobrać najnowszy kod, i zobaczyć jakie zmiany przygotowali dla nas twórcy rozwiązania.
To co mi się podoba i jednocześnie nie podoba to implementacja wzorca ServiceLocator. Dlaczego podoba? Dlatego iż ułatwia to znacznie pracę z SharePoint. Zamiast różnego kodu dostępu do SPPropertyBag mamy jeden nie zależnie gdzie przechowujemy ustawienia. Zamiast kilku implementacji logowania, mamy jedną wspólną i wiele outputów.
To, co mi się nie podoba, to właśnie ServiceLocator. Skoro już chłopaki zdecydowali się wykorzystać, czemu nie wykorzystali DI? Już widzę plusy i możliwości, jakie by to nam dało – na przykład wiele różnych nazwanych instancji logowania, które by zawierały informacje na temat nazwy aplikacji i inne niezbędne informacje per aplikacja a nie per całe rozwiązanie.
Dodatkowo jeszcze z jakieś 3-4 tygodnie temu sądziłem, iż odwoływanie się po GUIDach do pól na listach też jest fatalnym rozwiązaniem, o tyle że trzeba stworzyć klasę która będzie te GUIDy przechowywała. Jak przypadkowo zmienimy GUID w XML to good luck z aktualizacją plików kodu. Jednakże teraz tak patrząc trzeźwym okiem ma to jednak sens, nie zawsze ale w większości przypadków tak – mamy pewność iż odwołujemy się do danego pola (lub żadnego jak się GUID zmienił) a nie idziemy po internal name i nagle nic nam nie działa. Minusem tego rozwiązania jest Przekonwertowanie listy do DataTable, z tego co pamiętam to tam już nie ma GUIDów i odwoływać się trzeba poprzez internal name. Ale to chyba mały koszt ;) A Władek napisał ciekawe rozwiązanie które generuje wam GUIDy takie jak ma klasa SPBuiltInFieldId z SharePoint.
No nic, ja się cieszę, że wyszła najnowsza wersja, w końcu będę mógł spokojnie zakończyć swoje modyfikacje i jak dobrze pójdzie to powstanie kilka postów na ten temat :)
Jeżeli macie jakieś uwagi i sugestie co do p&p SharePoint to dajcie znać w komentarzach a może uda nam się stworzyć naprawdę fajny core z którego ludzie będą mogli korzystać :)