Skip to main content
    Country/region select      Terms of use
     Home      Products      Services & solutions      Support & downloads      My account     

developerWorks  >  Lotus  >  Forums & community  >  Best Practice Makes Perfect

Best Practice Makes Perfect

A collaboration with Domino developers about how to do it and how to get it right in Domino

Please help us prioritize our development efforts in the language team by commenting on the relative priority of these items. Which do you see as most important? Which will actually affect the way you develop applications and if fixed, open up new opportunities to do things you couldn't do before? Which do you see as deployment blocking or affecting your ability to sell your products (and by extension, ours)? This is a multiple choice/ranking question, not essay, so you can just say "JCGH" or some such to indicate your faves. If you feel there is an essay in you waiting to get out, though, go ahead and add that after your ranking. Good ones will get passed on to the development manager along with the summary of results.

A.        If you make a call to a C function and pass it "" for an argument that the C code writes a return value in, the C code overwrites part of the constant memory, so that when you use the constant "" thereafter in LotusScript code (even in other scripts), you will instead get the last return value from the C function. You must bounce Notes or Domino to cure the problem.

B.        A way to cause an occasional crash by incorrectly declaring the function NSFDbGetModifiedNoteTable in LotusScript code.

C.        Greatly improve performance when loading and editing code that uses multiple LotusScript libraries.

D.        Crash when making a function call such as Call etc(Split(...)) when the parameter is "by reference" and inside the function this value is used in certain ways, including assigning it to a document field via = (note: using a Byval parameter instead of by reference, or using ReplaceItemValue instead of an assignment, does not cause a crash. Assigning the Split result to a temporary variable and passing this to the function, also avoids the problem).

E.        A Select Case statement using a "to" range of strings (Case "a" To "z") uses a case-insensitive compare, even though Option Compare Nocase has not been specified.

F.        Overriding a method that returns an object (NotesDocument for instance), is not possible if the base class is defined in a script library included by the derived class (compile fails). If they're in the same module, there's no problem.

G.        The DIR$ function in English Notes in Windows OS with international character support enabled, can't return filenames containing international characters (they are changed to "?").

H.        LotusScript code runs about half the speed on Unix (and presumably Linux) than on Windows, because it "yields" processor too often. Long operations like "New NotesDatabase" don't take longer, but regular statements doing math and logic are slower.

I.        Smallish memory leak when using dynamic arrays, worse if the arrays are of variants. Has led to crashes in at least one case.

J.        Enhance error reporting to display the entire LotusScript stack by default when an error occurs and to define a single application-wide programmable error handling event (perhaps in the database script).

Andre Guirard | 6 February 2008 02:00:00 AM ET | | Comments (52)

Search this blog 


    About IBM Privacy Contact