It has been a long time since the LotusScript language received any major attention. The time is rapidly approaching where the language needs a major upgrade to compete with other programming languages such as Java, C#, and VB.Net. The following is a list of the 20 features that I would most like to see added to LotusScript: (many of which are already posted on IdeaJam)-
- Allow the extension of product classes such as NotesDocument
- Provide a construct (similar to .NET LINQ) allowing LotusScript to perform SQL operations such as joins on views.
- Allow method overloading (defining a single method with multiple options for the parameters - # and type)
- 100% Fideltity exporting and importing data using DXL.
- Expand the list of properties exposed by product classes to include all those other properties already available within the C API.
- Add a Try/Catch construct as an alternative to On Error Goto (with VB.Net it is Try Catch End Try)
- Allow optional parameters for a method (sub/function)
- Add "enumerations" (as per .Net) as a construct within a class. This would allow keywords to be added without necessarily having to assign keywords specific value.
- Add the ability to serialize a class into text, XML, and/or binary formats. This would be especially usefull when passing data via a Web Service.
- Allow field events to be trapped outside the form (e.g. allow an external class to trap when a field value has changed)
- In addition to Public/Private classes, add the ability to define abstract and sealed classes.
- Provide greater support for polymophism, including the ability to cast a object from one class to another.
- Add the ability to define extension methods as a way of adding to/modifying the behviour of classes (as per C# 3.0)
- Provide a constructor for the NotesDocumentCollection class
- Add an AllDocuments property to the NotesView returning a NotesDocumentCollection.
- Extend the NotesUIWorkspace class so that access can be gained to any window presently open on the workspace.
- Implement interfaces as a way of specifying properties/methods that must exist in a class implementing a specific interface.
- Add Reflection, in which it is possible to establish if a class has a specific property/method.
- Devise a simple way to tell if a Rich Text field is empty
- Add iterators for document collections. e.g. Forall NotesDocument in NotesVIew or ForAll NotesDocument in NotesDocumentCollection.