<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr"><br></div><div dir="ltr"><br><blockquote type="cite">On Aug 27, 2021, at 12:07 AM, Marcel Taeumel <marcel.taeumel@hpi.de> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Hi Tim --<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Pragmas do something similar; an interesting idea for annotating code and then no tool(s) that make it easy to work out what is going on.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">The standard pragmas integrate well with the "Senders" tool. :-)</span></div></div></div></blockquote><div><br></div>and, which is sadly what lots of designers miss, with perform:wothArguments: and/or sentTo:/sendMessage: etc. ie a pattern that works is<div><br></div><div>- create a builder object that understands the pragma(s) in question</div><div>- visit the method(s) implementing the pragma</div><div>- send the pragma to the builder</div><div><br></div><div>This is how pragmas for menus should be done.</div><div><br></div><div>- give the base menu to a menu decorator builder, which is parameterized with the name of the menu and the class(es) involved in the menu</div><div>- have the menu decorator builder visit the relevant pragma methods in the class(es)</div><div>- use the resulting decorated menu<br><div><br><blockquote type="cite"><div dir="ltr"><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr"><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 25.08.2021 19:19:07 schrieb tim Rowledge <tim@rowledge.org>:</p><div style="font-family:Arial,Helvetica,sans-serif"><br><br>> On 2021-08-25, at 5:16 AM, Marcel Taeumel <marcel.taeumel@hpi.de> wrote:<br>> <br>> Hi Tim --<br>> <br>> Please update your image and see if it got fixed. :-)<br><br>Well it hasn't failed after a dozen or so tries, so that looks better. <br><br>The Service stuff is another classic example of a probably good idea being pushed into the system far too early; although it actually has some class comments that might even make sense if you have the time to sit and read and dig around, there is a lack of an overview of what & why. The 'services browser' does... what? <br><br>Making nice clean abstractions can be a great thing. Ending up with a great yawning gulf between the two sides of the abstraction means a huge problem in understanding what the hell is going on. Traits did this and we end up with some complicated code sitting around almost entirely unused. Pragmas do something similar; an interesting idea for annotating code and then no tool(s) that make it easy to work out what is going on.<br><br>tim<br>--<br>tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim<br>Esc key to reboot Universe, or any other key to continue...<br><br><br><br></marcel.taeumel@hpi.de></div></blockquote>
                                        </div><span></span><br></div></blockquote></div></div></body></html>