Resumiendo varias referencias en la red de las mejores prácticas elaboré la siguiente tabla para referencia de los desarrolladores en SharePoint.
Aclaración:
Esta es una guía rápida de referencia. Si no ha desarrollado con el modelo de objetos de SharePoint le será difícil comprenderlo al inicio. Le recomiendo lea las referencias y experimente con el modelo de objetos primero.
Mala u Obsoleta Práctica | Práctica Recomendada | Breve Explicación |
SPControl.GetContextSite(context) | SPContext.Current.Site | Para compatibilidad con versiones anteriores WSS V2.0 |
SPControl.GetContextWeb(context) | SPContext.Current.Web | Para compatibilidad con versiones anteriores WSS V2.0 |
SPList.Items.Count | SPList.ItemsCount | Cargará toda la lista de elementos. En vez de ello utilice la propiedad. |
SPList.Items[Guid] | SPList.GetItemByUniqueId(Guid) | Cargará toda la lista de elementos. En de Vez obtendrá el elemento que esta buscando. |
SPList.Items[Int32] | SPList.GetItemById(Int32) | Cargará toda la lista de elementos. En de Vez obtendrá el elemento que esta buscando. |
SPList.Items.GetItemById(Int32) | SPList.GetItemById(Int32) | Cargará toda la lista de elementos. En de Vez obtendrá el elemento que esta buscando. |
for(idx){ SPList.Items[idx] } | SPListItemCollection oListItems = oList.Items; for(idx){ oListItems[idx] } | En el for loop carga los elementos una y otra vez. En vez de ello declare SPListItemCollection y carge solo una vez. |
SPWeb.Lists [string] | SPWeb.GetList(string) | Carga toda las listas del sitio. En vez de ello Obtenga la lista especifica. |
SPQuery oQuery = new SPQuery(); | SPQuery oQuery = new SPQuery(); oQuery.RowLimit = 2000; | Especifique siempre el limite de filas a retornar. En vez de obtener una lista de quien sabe cuantos elementos. |
SPContext.Current.Site | NO EXPLICIT DISPOSE REQUIRED | |
SPContext.Current.Web | NO EXPLICIT DISPOSE REQUIRED | |
new SPSite(url) | using(SPSite s = new SPSite(url)){} | Utilice Using para hacer el Dispose |
SPSite.OpenWeb() | using(SPWeb w = s.OpenWeb()){} | Utilice Using para hacer el Dispose |
foreach(SPWeb w = SPSite.AllWebs){} | foreach(SPWeb w = SPSite.AllWebs){ try{} finally{ if(w != null)w.Dispose(); } } | Utilice try finally para hacer el Dispose Explicito. |
SPSite.RootWeb | NO EXPLICIT DISPOSE REQUIRED | |
SPWeb.ParentWeb | NO EXPLICIT DISPOSE REQUIRED | |
SPWeb nuevo = SPWeb.Webs.Add(); | using(SPWeb nuevo = SPWeb.Webs.Add()) { …} | Utilice Using para hacer el Dispose |
foreach(SPWeb w = SPSite.Webs){} | foreach(SPWeb w = SPSite.Webs){ try{} finally{ if(w != null)w.Dispose(); } } | Utilice try finally para hacer el Dispose Explicito. |
Code4Fun!,
Manolo Herrera
Referencias en la Web:
http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2006/07/16/414.aspx
http://msdn.microsoft.com/en-us/library/aa973248.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spcontrol.aspx