Thread View: comp.sys.next.programmer
3 messages
3 total messages
Started by nevin
Wed, 18 Nov 1992 21:18
Re: Coding Rules/Suggestions (RTF)
Author: nevin
Date: Wed, 18 Nov 1992 21:18
Date: Wed, 18 Nov 1992 21:18
544 lines
31554 bytes
31554 bytes
Well, I'm glad you at least received some of what you where after .
Why email vs. a post? I figured (perhaps incorrectly) that this
subject was, well, fairly subjective and tends to be religeous in
nature. That is, people tend to strongly hold opinions about how to
layout software. This is especially true when you collect a tallented
group of people who all have succeeded in past ventures and wish to
instill their experience into the group. I've seen people (myself
included) go to irrational lengths to support their positions. So, I
felt I'd respond to your challenge without insighting a jahad.
[...]
It'll port easily to every NeXTSTEP supported platform and that's all
I care about. Other programmers may not be as lucky, though, and may
not have that luxury.
Sigh... Most of us in the "Real World" (tm) don't have that luxury.
In fact, most business cases for making money cannot count on NeXT
(WP, Lotus, Boss, Adobe, etc), or the business plans are extremely
optimistic without much hard data (AppSoft), or are destined to
remain small players (Metrosoft, Stone Design). If NeXT can get their
act together for the cross-platform support many of us will be ready
and willing to ride the bow-wave. So far, NeXT lags in that area .
Hence, we look at markets like Windoze (tm).
[...]
I'm against Hungarian notation. I'm also not inclined to make any
rules governing instance variable names, but class names are covered
(see comment above).
BTW: complete Hungarian covers variable, function, method, class, and
file names. In short, everything that you'd never want to see
Hungarian on :-).
[...]
Also notice the clarification at the end of the paragraph regarding
localized NIB's (I had one person email me in disagreement, arguing
that they wanted localized NIB names instead).
The one window-per-nib is considered proper NeXT IB ettiquete. It
also was originally related to early performance considerations (i.e.
wanting to lazy-load as much as possible). An anti-example of this
(If I remember correctly) is WordPerfect, which loads slowly because
multiple windows/panels in a single nib (in which the archived
objects will be getting a read: and awake call). I might add that
there has been discussion about nib loading and 3.0 which might tend
to reverse NeXT's original position (most of the 3.0 slow-down is
related to nib/disk/memory stuff). Although the stance has not
changed, hopefully this demonstrates that the convention rose from an
underlying intent: perforformance, which can change how things get
implemented.
I think that's also my position on standards: a standard for the sake
of a standard is nearly akin to dogma. A standard in and of itself is
there to serve a purpose or set of purposes. These purposes will
likely vary depending on the environment one finds themselves in, and
so the standards will be of increased service if they can adapt to
aims of the present application (broad meaning).
I perceive that you're attempting to implement a set of rules
(standards) that serve your best utility. IMHO, find out what goals
you're trying to achieve, prioritize them, and then see how they
codify into a rule-set. My experience is that you'll end up with a
different set of standards :-).
I presume you mean: "some panels/windows in some NIB's don't have
titles". My question would then be: why doesn't the panel/window
have a title? What would it hurt to put a title in? Note that the
rule I gave does give you some discretion in the choice of the title:
Often times nibs are used to collection images (as in parts of WM),
or controls (common for custom windows), or insets to other panels
(i.e. customizing NeXT's print panel, NeXT's use of subpanels in the
Color picker). These titles never get displayed and often are
multi-purpose.
[...]
re: never touching attributes/instance vars...
It depends on how "purist" or theoretical vs. practical you want to
get. Within the same module/class it may be acceptable to refer to
the instance variable vs. the method, especially where speed is
concerned.
If it's within the same instance of a class (i.e., the same "module"?
what do you mean by a "module", anyway?), the instance variables of a
given instance of a class are accessible to all methods of that
instance anyway, regardless of the variables' classification (public,
protected, or private) so in this case there would be no advantage to
declaring any of them public.
But, if you are talking about different instances of the same class
what relevance does the fact that they are of the same class have? I
guess if it executes faster, then we should all just go back to
having global variables for everything (ala Windoze)?
A module in ObjC is any *.m file. Strictly speaking I'll mean to
interpret the above as using an instance variable within the confines
of the original class category and within a single file. So, I'm not
advocating directly using an instance variable in a subclass or
category, only within the bounds of it's class implementation, and
then only for reasons of speed. Otherwise you risk skirting the
benefits of OOP.
[...]
I've been finding that the third checking you mention (invarients) is
especially important with Distributed Objects. These types of
objects seem to either need state-machine logic inside of them, or
else provide some sort of mutex-locking methods. And in any case, to
implement such mechanisms, the object must "remember" who sent each
message so "state" information is quite common.
Distributed Objects is probably a good place to apply the invarient
checking.
..
protocols are cool, but not supported outside NeXT :-(
So? :-)
Actually, we use categories, but it's yet another thing that makes
life hell porting things to other platforms :-(
Thank-you for your response. Should we start sharing our discussion
with the net?
If you'd like, perhaps you can post a summary.
regards,
Kevin
--
Nevin Pratt, Digital Technology, Int'l Orem, Ut
NeXTmail preferred, but ONLY at my REAL email address:
nevin@dtint.dtint.com
-- NewsGrazer, a NeXTstep(tm) news reader, posting --
M>UQR=&8P7&%N<VE[7&9O;G1T8FQ<9C!<9G-W:7-S($AE;'9E=&EC83M<9C)<
M9FYI;"!4:6UE<RU2;VUA;CM<9C%<9FUO9&5R;B!#;W5R:65R.WT*7&UA<F=L
M,3(P"EQM87)G<C$R,`I[7&-O;&]R=&)L.UQR960P7&=R965N,%QB;'5E,#M]
M"EQP87)D7'1X-3(P7'1X,3`V,%QT>#$V,#!<='@R,3(P7'1X,C8V,%QT>#,R
M,#!<='@S-S(P7'1X-#(V,%QT>#0X,#!<='@U,S(P7&8P7&(P7&DP7'5L;F]N
M95QF<S(T7&9C,%QC9C`@5V5L;"P@22=M(&=L860@>6]U(&%T(&QE87-T(')E
M8V5I=F5D('-O;64@;V8@=VAA="!Y;W4@=VAE<F4@869T97(@"GM[7$Y'1W)A
M<&AI8S8V('-M:6QI92YE<',*,3`V-C(@32DR)3`T4E4A.29=0CDR5%(K0V!`
M,34A,S%"5%(K0V`J*3(U-#HW,4PY,TA`(D(T13!7*44X-S%//$-(0`I-,2<I
M03U02$4I-"U2.38E5#HV74XQ)B54.3-(0#56-40H)$E5.T)@0"TR8%(L,TA5
M+B-(42TB8%$N,T11"DTB0C1%,49=4BY"(4<[)C5..T!(12DT,4\X5S5-.399
M5#%&74X])RQ:*")!03TF-4XY(D0J*3(U,#@V/44*33Q32$`L(F!1(D(T13!&
M754[1C%).T8](CM70%HH(R19+B)@5"U38$`L0RA7*",P6"TP2$4I-#5..20M
M3PI-.S9513M',5,B0$A%*30I13E614XQ)EU#/39513M',%HH(EU5/%<H3SLF
M14(K5%E%/B<Q,STF-5`K5R%2"DTZ-EE4-"8E0SI6)4<Y,EE0/%!(12@U(3,K
M-"5$.U8I12LS*$XL8$A%*34Q23TF444N0B$P/$9%3CTF14X*33E2(3`X-BU+
M.#8]12)"-$4Q-EE$,%9=33LV-4X])RPJ*34Y13Q'+4D[5EA:*",H3BQ@2$4P
M5EU0/C<I20I-.59!5"Y"8%$N,T!8*R(A+CDU030K(B$I.T8L3B)`2$\W55TN
M-B8Q13E'3%$H)D5..28U6"@G/4@Y-RE%"DT^5R%//"(A4#M78$`\)EU0/S=-
M1#DV.5TZ-CE%.R<M13\V*4D[1C!`.28U1B)"73\W5%DX.$8Q13E'3%$*32@F
M14XY)C58*"<]2#DW*44^5R%//"(A4#M78$`\)EU0/S=-0CHV640H)C%%.4=5
M23E&-4P\5C5=.$9%3@I-.2(A1#DV."HK5353.3<I+SA&244X5S%3*",D4"@F
M)5(\1B59*"5=/S-%040Y-C@J*U8Q13E&14XY-S53"DTY-RE/.$9)13A7,5LB
M0$5%/B8M2"@F,54\(F!1*"8E1#DB(40]-V!`-3<M13Q$74(Z1C5#/2<L0#LF
M-4X*33E7,4@H)CU4/E!(*2(V)5(\1B59*"8Q53PB8%`H)353.3<I+SA&244X
M5S%3*"<A53TF14X])C52/48E3`I-(D!$*2M5-5,Y-RDO.$9)13A7,5,H)C58
M.%9`0#DF-48B0$5=/E<A3SPG54DY1C5,/%8T0#4W+44\1%U""DTZ1C5#/2<L
M0#DW04,Z(F!3*")442@G*4\[)E!`/"<U5")'53\W5%DX.$8Q13E`2$\]-EE$
M.38Y23M&-54*33Q6-5([5BE*.38M5#Y5-5,Y-RDO.$9)13A7,5,H)C58.%9`
M0#M'-4P[(B%0/3<Q73=572XV)BE$.38X*@I-*U8U6#DV+54\5C52.U8I2CDV
M+50^5353.3<I+SA&244X5S%3*"8U6#A60$`Y5C54*"8U6#DV+5TW55TN"DTV
M)BE$.38X*BM573\S14$R.38M5#0F)50Z)TQ4*",H0#Q&74P[(B%-.U<Y13TF
M7$`L,B%).T8Q13XB8%`*32@G*4PZ-EE%/29<*BPB(44^)BU(*"<I3#HV644]
M)EQ`.T8U1R@C8$`\1E%).T8U5#M2(4,[)EU3.3<A00I-/29!73=572XV)BE$
M.38X*BM573\S14$P/$9=0SDW+5,T1C5#/20E4CE7+5LB0$11*"9%3CDF-5@H
M)S%9"DT\)C1`*U8E4CQ&)5D])T50.3(A13PW3"HB,$5%/B8M2"@C8$`M(F!2
M*"9%3CDF-5@H)E%%.T8]5#HB8%$*32@G+54X1TPJ(C!$*3DG-5`H(RQ`.#8Q
M1"@C)$`Y-T%#.B=,42@F14XY)C58*"8U6#A60$`Y5C54*"8U6`I-.%9!73E&
M75(B0$0I(C,T0"PR(5([5E%,*",T0#HV640Y-T!`.3=!13A02"DB-U5&.U<H
M0#PF75`H)R%/"DT\8$@I/S=-13XF-4,_-D5&.3914SDP25TW55TN-B8I1#DV
M."HK5RE%.%<Q1CHV44P^5CU3.#<Y12@F644*33U7(4$])D!`/E5=/S-%03(Y
M-BU4-"8E5#HB(48Z-E%,/S(A/S=463@T)RE/.%8U4SQ5*44X5S$A/$8]4PI-
M*"8]4CDW+50[5RE%/S5=/S-%04(Y)C5&(D)=4CDV+50X5E%)/"=-3CDW/5`X
M-S%(*"=-/S=463@T1C5#"DT])2%!/29!72@E73\S14$P/$9=0SDW+5,T1C5#
M/20E4CE7+$`X5E%)/"(A3CDW/5`X-S%(/S5=/S-%04(*33DF-48B0EU2.38M
M5#Q7,5([5DU%/E!(*3E7+4$]1C1`.T8U5SPF)50Z(B%$/3=@0#TG15`Y,F!/
M.#<I4@I-.#=%5#XW(44H)C51/E8Q53PB(4PY-EE'/29`0"U"(44\-U5;.48E
M3#Q6-5TZ-CE%.R<M13Y02"DB-TU'"DT\5B56.3(A/S=463@T1C5#/24A03TF
M0$`[1S5,.R(A0SM664,X-S!`/%<Q4CM6344H)CU2.3<M5#M7*44*33\P2"DB
M-C%5/"(A3#DV64<])D!`.#<I4C@W1$`X5SE8*"8M3SPG1$`Y)S50*",H0"TB
M8$TL,B%2.U913`I-*"<A53TB(3\W5%DX-"<I3SA6-5,\52E%.%<Q(3Q&/5,B
M0$5=/E=-/S=463@T1C5#/24A03TF0$`\5S%2"DT[5DU%/S(A/S=463@T)RE/
M.%8U4SQ5*44X5S$A/$8]4S\V148Y-E%3.3(A1SQ&-5,])EU2.3!)73=572X*
M338F*40Y-C@J*U=!63Q604\]5TPJ(C-@0"PR8%,H)D5..28U6"@F444[1CU4
M.B)@42@G+54X1TPJ(C!%0PI-/3<I4CDV650\)EU).T<P0"TB(4D[1C%%/B)@
M4R@F14XY)C58*",D0#E6-50Z-EE4.3<I5C@V4$`\5D%/"DT]4$@I(C,L0#HV
M640Y-T!`+%(A23M&,44^(F!2*"9553LB8%$H)B5$.2(A1SDW,$`X-C%$*"8U
M6#A60"H*32(P1%,H)D5..28U6"(S+$`Z-EE$.3=`0"Q"(4T]-E!`.58U5"@F
M)40Y(B%%/B8M2"@F54\]1C54.U(A4`I-.U=@*B(W548[5RA`/"9=4"@G(4\\
M8$E=-U5=+C8F*40Y-C@J*U=!4SHF75<^4$@I+")@42@C+$`Z-EE$"DTY-T!`
M.R8U3CE7,4@H(R1`/%<U0CY02"DB-BU5/$<I13M',5`[5D5./2)@5"@F14XY
M)C58*",L0#HV640*33DW0$`L,B%'.3<Q23M',44\1SE!.R(A4SHF75<B0$0I
M.3=!0SHB8%,H)D5..28U6"@C+$`Z-EE$.3=`0`I-.58U5"@F)40Y(B%%/B8M
M2"@F54\]1C54.U(A4#M78"HB-U5&.U<H0#PF75`H)R%//&!)73=572XV)BE$
M"DTY-C@J*U=%4SHF75<^4$@I+")@42@C+$`Z-EE$.3=`0#LF-4XY5S%(*",D
M0#Q7-4(^4$@I(C8M53Q'*44*33M',5`[5D5./2)@5"@F14XY)C58*",L0#HV
M640Y-T!`+#(A1SDW,4D[1S%%/$<Y03LB(5,Z)EU7(D!$*0I-+%(A23M&,44^
M(F!3*"9%3CDF-5@H)CU%/2(A03DF,$`[-EU6.3<Q3R@G(4\\8$@I/S8Y3SQ"
M(5`[5V!`"DT\)EU0(D=5/S=463@X1C%%.4!(3S@W*4,])TU!/$8M5#M2(5`[
M5V!`/"9=4"@G(4\\(B%0.U<A73=572X*338F*40Y-C@J*U<M13TF*4([5T%;
M/"9=4"@G(4\\(B%0.U=@0#PF75`_-5T_,T5!0CDF-48B0EU5.%8E0PI-.B8U
M6S\U73\S14%".28U1B)"754X5B5#.B8U4STF)50]-RU;.S8E4CI28%`H(V!`
M+")@4"@C(5TW55TN"DTV)BE$.38X*BM7+44])S5#.#8M2#DW(4$\1B5-/%=-
M0SLF-4$\1S%/.S8E4CI753\W5%DX.$8Q13E`2$\*33TV)5`\)C5..2=-4SXW
M+50Y-E5$.C8M5"@F*44Y5D5.*"8M5CXB(44^)C5#*"8U3CDG53\W5%DX.$8Q
M10I-.4!(3STV-4\Y1D5,.R=-1SQ6)58Y,B%..3<]4#@W,4@H)S5!/"<A13M&
M,$`Y-EU&.C913"@F/5(Y-RU4"DT[5RE%/S5=/S-%04(Y)C5&(D)=53E&14P[
M)TU'/%8E5CDR(4XY-SU0.#<Q2"@G-4$\)R%%.T8P0#E&14P*33LB(4<\1C53
M/29=4CDW53\W5%DX.$8Q13E`2$\]-RU4/$9=2SDW3"HB-CU3.#<Y12@F644]
M5R%!/29`0`I-.2<U4"@F444[1CU4.B)@5B@F-5$B0$5;.3=!0SHB(54X-R%0
M.3991"@F+4\[1BU!/2=56STV)5`\)C5."DTY)U5).48U3#Q6-"HB-RU4/$9=
M2SDR(4<\1C53/29=4CDP25TW55TN-B8I1#DV."HK55T_,T5!53Q7,5(*33M6
M344\)B54.B1503TG*4D^(B%$/3=@0#U6044\1C1`/E<A3SPB(5`[5R%=/E95
M03TG*4D^(B%$.38Y70I-.C8Y13LG+44B0EU5/%<Q4CM6344\)B54.B=,*B(V
M644]5R%!/29`0#DG-5`H)E%%.T8]5#HB8%8H)C51"DT^4$@I(C8U6#A60$`]
M-B50/"8U3CDB(3\W5%DX/3<M5#Q&74LY-R%!/29!+3@W,5(Z-T!`.%<U4CQ&
M-4X*33TF54$])RE)/B(A13XF+4@H)BU/.T8M03U@2"DB-RU4/$9=2SDW(4$]
M)D!`/%8U5#LV)50\1D58(D!%70I-/E<U03PG(44[1C!`/%<Q4CM6344\)B54
M.B=523E&-4P\5C0J/S(A/S=463@X1C%%.4!(3STW(4$])D%;"DTB0$4[.3=!
M0SHB(5LK5S5#.#8M2#DR(4,]1T%=.C8X0#PF)50Z)BE".U=`0"M7+44])BE"
M.U=`0#A7.5@*32)`1$`^4EU-.U<Y13TF7$`X5SE8/S=,3SLF14XY-S%/*"8M
M5CXG55LK5BU5/$<Y13TF7$`X5SE8/S=,3PI-.%913SQ6-5`X-S%(*"8M5CXG
M55`X-S%(.49=4C@V44PW-BU6/F!)72@E73\S14%".28U1B)"75,Y-S%3"DT]
M)RE/.E8U03DF254\5S%;/"9=4#\U73\S14%".28U1B)"74,]-RE2.3995#Q7
M,5([5DU%.#8Q2CTW+50*33Y6.4$[)RU%/S5=/S-%04(Y)C5&(D)=4SDV444X
M5S%&.U995#Y6-5@X5D!`.49%3CDF.4\[1S!`.3=!0PI-.F!)1#TW8$`])T50
M.3)@3S@W*5(X-T54/C<A12@F-5$H)TU-.#9-13E&74X])U5;/%8M03LF-48[
M5EE4"DT_-D5&.3914SDR(5,Y-S%&.U995#\U73\S14%".28U1B)"73\S14$C
M.U950CHV644P-RE2.#=%4SY02"D*33A6754[1S%4.U9503Q&3$`Y)S50*",H
M0#@V,40H)D5..28U6"@F,54\(B%,.3991STF0$`L4F!-+#(A4@I-.U913"@G
M3"HB,$12*"9%3CDF-5@H)E%%.T8]5#HB(5,]-BA`.2<U4"@C,$`L,B%2.U91
M3"@C)$`Z-EE$"DTY-T!`.3=!0SHB8%0H(E11*"<I3SLF4$`\)S54.C995#DW
M*58X-E!`.3=!0SI@2"D_-RE%/"8U03TB(5`*33M78$`\)EU0*"<A3SQ@25TW
M55TN-B8I1#DV."HK5RU%/28M33XV34,[5E%//$=,*B(S)$XL(B%%/B8M2`I-
M*"<M53A"(40]-V!`.2<U4"@C.$`K,R1`/$9=3#M@2"D\5S5"*"8Q53PB8%`H
M)E%4/E<A3SPB8%`_-D5&"DTH(S1`+#(A4CM644PB0$14*")442@G*4\[)E!`
M/%<U0B@F,54\(F!0*"915#Y7(4\\(F!0/S9%1B@C+$`*32PR(5([5E%,(D!%
M13XF+4@H)RU5.$(A1#TW8$`L(B%,/2=-4#M78$`L)U5).4(A4SDW,5(Y5BE#
M.U913PI-/$!)73=572XV)BE$.38X*BM6+54\1RE%.T<Q0SLW14LX5EU,.U<I
M6SA7-5(\1C5./2<I1SA&+4\[)EU2"DTH(RU;+#)84"@F-5@X5D!`/%<U0B@C
M+$`L,B%2.U913#\W*44\)C5!/2)@4#\U73\S14%".28U1B)"748*33LG-5,Z
M)CU2.#<A2#HV+5,^5U5$.38X*BM7+44])SU).T8Q3SU7,5D\)C5;/"9=4"@G
M(4\\)U5$.38X*@I-*U8M53Q'*44[1S%7.C991#M7/50^-R%%/E<A3SPB8%`_
M-C%%.4!(3SQ6-50X-E%0.B8E6SPF75`_-C%%"DTY0$A/.%<U4CQ&-4X])B5,
M/"9!03Y3)$XL)U5$.38X*BM604DY)C5#/3<I4SM7*5L_-C%%.4!(3SM6*5,*
M33A7-5(Y-BU5/$<M3SQ'35TY)C5&(D)=4CDW.44X-E%#/3<I4SM7*5L_-C%%
M.4!(3SQ6-50X5S52/%9=4@I-/E,P0#Y7(4\\)U52.3<A13@W,5TX1D5..2(A
M1#DV."HK5RU(.U<]0STW*5,[5RE;/S8Q13E`2$\S1C58"DT])2U4.3<A)3M&
M+4\Y)D5..5(A5SHF-5(Y,B%..U<Q6R)"72XY-T%4-%<Q13PD-4XX5EU$.C99
M1R@E+50*33@V640X-RE$,3990SM6,4D[1CQ`+$,T5B@F)5(\1B59*"8M3SPG
M1$`Y)C5&(D-@0#93)%(N,ETA.5<I00I-/48T3S`V)4,]-S%%*U0E0SHW*4,]
M-E5&.R8U6"M4)50Z-E%$.3)=(3DF144\1C53.C<L3S`W*4D[1CQ/"DTP5BU%
M.29%3#LF)$\Q-CU2.#<Y12)"724X-BU5/28T3S$V+4D\1BU5.S8Y3#DW0$\Q
M-C%).3<I13Q615,*32M414<\1B56.3)=*3@V+54])C1/,C8M23Q&+54[-CE,
M.3=`3S(V,4DY-RE%/%9%4R)"724])D!/,T<Q20I-.R8Q12M474<\1B56.3)=
M+S@V+54])C1/,U8M23Q&+54[-CE,.3=`3S-7,4D[)C%%*U1=1#HV-5(Y-RU)
M"DT\4ETU.5<I03U&-$\U-B5#/3<Q12)"734X5D52.%<U33E&444^(ETU.29%
M13Q&-5,Z-RQ/-C8E0STW,44*32M5,4@[5RE.*U9552M6554[)S%)/"9162M6
M,4D]1D5$.3)=0SM7(5D\1D5'.B<P*BPS/%8K5RE%.59%4PI-/28U4CDV,$`L
M,T!1*U8I4CM6344[1BE!/$)@42XS8$\[)EU'.C8M03LF64\](F!1+C,H3SM6
M644\5S50"DTY-RE).U<H0"Q#8%$K5S%7.U<M53PF-5(Z-EU2(D,H4"TB750Z
M)RE%.3<M53PF-5(Z-EU2*",H4"XR75`*33LG-5,[-D5./3<L3SM6644\-S5!
M/$<Q13Q"74\[1C5(.#911BM7,4@\1C5%/#<U03Q',44\1RQ/.#8]4@I-.#<Y
M12)"74$X-BU5/28T3S@V+4D\1BU5.S8Y3#DW0$\X-S%).R8Q12M6)40Z-C52
M.3<M23Q274$\1D5."DTY4EU#.%8U1#HV44PX,EU%.5<I03U&-$\Y-B5#/3<Q
M12)"744X5D52.%<U33E&444^(EU%.29%13Q&-5,*33HW+$\Z-CU2.#<Y12@C
M*%(M0EU).#8M53TF-$`L0RA8*U9%0SHW*4,]-E5&.R8U6"M6140Z-C52.3<M
M20I-/%)=13TF0"HK5EE4.C911#DR8%(L4SA/.U8]4C@W.44K5EU!.%<U5#DR
M74\X5D52.%<U33E&444^(EU/"DT])D5,.28T3SM6,4DY-RE%/%9%4R@C*%0L
M0EU5.5<I03U&-$\]-B5#/3<Q12)"754X5D52.%<U33E&444*33XB8%(M(SA/
M/38Q23DW*44\5D53*U=%03A7-50Y,F!2+3,H3STF04\\1EA//C8Q23DW*44\
M5D53-S!)6PI-.2<U4"@G,5D\)C1`*U9903LV-50^-R%%*"8U42)"(5LS1C58
M/24M5#DW(24[1BU/.29%3CE28%(H)D5."DTY)C58*",H0#HV640Y-T!`/"<U
M5"@G(4\\(F!1*"8E1#DG55LY-T%#.B(A4#M7(5TZ-CE%.R<M12)'548*33M7
M*4$[)E!`/"9=4")"72XY-T%4-%<Q13PD-4XX5EU$.C991R@D644^)S$S/28U
M4#$V64,[5C%).T8\0`I-/$8U03DF74X[)T1`.28U1B@B8$`B0ET_,T5!1CQ7
M,5(H(R12+B(A4STG*4D[1CQ`.2<U4"@C8$`J)5TN"DTV(D1`/"<U5#HV650Y
M-RE6.#900#DF-48H(F!`(D)<2BI&.4D[1C%&.U995"@B748Z-EE$.49=3CTB
M(4P*33M6)40H)C%%.4!(3SE&14XY)CE/.T<Q6R)"8$4H)"E%.%8E53Q6-$`]
M5C1`.%8E3B@F644]1C52*"9110I-/2(A+CDW050T5S%%/"0U3CA6740Z-EE'
M*"8]13TB(4D[1S%/(D)@12@E+4@X-RE%.20Y3SM',20Z-RE%"DTX5S%//$=$
M3"@G/44H)BU!.T993STB(5(Y-C5..%9=1#DR(4$H)CE/.T<P0#TF7$`S1C58
M/24M5#DW(24*33M&+4\Y)D5..5!(0"DR(4DY0B%7.3(A03Q&-$`Z-EA`/%9!
M03Q&-40H)E5/.28T3B@B(3,[4B%).4(A0PI-/3<I4CDV650\5D%!/$8U1"@F
M15,H)S%2/38T3")"8$4H)SU%*"8M03LF4$`])D%%*"993SQ&54$[(B%&"DTZ
M-EE$.49=3CTB(4$[1C!`/$8U5#TW*4XH)S%(.#<P*B@B74,]-RE2.3995#Q6
M04$\1C5$*"<]2#DW*44*32@G35`[5V!`.%<U4CQ&-4X])RU(.#<I13DG5$`^
M5CE!.R<M13\R(4DY1C5,/%8T*B@G3$HJ1CE).T8Q1@I-.U995"@G5"HH)TU$
M/3=@0#=463@Y1RU4/$)@4R@C)%(M,B%'.3<Q23M',44\1SE!.R(A0SU'+$`[
M)C5."DTY5S%(*",L0#@V,40H)5TN-B8Y4STG*$`L(F!3*")442@G*4\[)E`J
M*"(A1SDW,4D[1S%%/$<Y03LB(4,*33U&6$`Y-T%#.B(A)CM6650Q)D52.38M
M5#M7*5DH(RA`.C991#DW0$`Z5EE//5980")"8$`^5R%//"(A)@I-.U995#$F
M15(Y-BU4.U<I62@F-5@X5D!`.58U5#\P2$`H)TQ**D8Y23M&,48[5EE4*"8Q
M53PB8$\Q-EE#"DT[5C%).T8\0#E6-50H)2U4.#991#@W*40Q-EE#.U8Q23M&
M/$`Y-R0J*")@0#Y0140]-V!`.R8U3CE7,4@*32@F,4DX5S!`.3=!0SI@2"D^
M4R1`.C991#DW0$`K5#DI,2(A3CDR(5LL0B%).T8Q13XB8%,H(R1`/$9=3`I-
M.R(A4#TW,5T^5R%//"(A4#M7(5TZ-CE%.R<M13\V.4\\1B5,.V!(*2@F,54\
M(F!/,3990SM6,4D[1CQ`"DTS1C58/24M5#DW(24[1BU/.29%3CE2(5`]-S!`
M.28U1CHV644Y1EU./6!(*3\W344^)BU(*"<A3SPG5$`*33HV.44[)RU%(D)@
M0"@G54DY1C5,/%8T*B@G54DY1C5,/%8T*C\V*4D[1C!`.28U1B)'55L\)EU0
M/S9%1@I-.3914SDP2$\W5%DX-"<I3SA4)5(\1B59*",T0#@W*5(X-T1`-U5=
M+C8F,44Y0$A/-U19.#!604$[1EE%"DT[)RQ`+"(A/S=463@Y)C5&(D)=/S-%
M030[5S%!.R0I63TF-5,H(V!`-U5=+C8F,44Y0$A/-U19.#$F72D*33LV)4<Y
M-%U0/E!(*2PR(4D[1C%%/B=-1#TW(5T^4R5=.C8Y13LG+44H(ET_,T5!(SHF
M)4X[1C5,/%(A10I-/B8M2"@G+50[5RE%(D!%/S-%02,Z)B5..T8U3#Q28%(H
M)B5$.2)@4B@G*4\[)E!`-U19.#0G*4\X5"52"DT\1B59*"-@0#=463@P5D%!
M.T9913LG+$`Y5C54.C995#DW*58X-E!`.#<M5#M7*44H)R%//&!(*2TR(4D*
M33M&,44^(F!4*"9%3CDF-5@H)E55.R)@4B@F14XY)C58/E,D0#Q7-4(H(T!`
M.C8Q23U"8%$H)B5$.2(A30I-/39173Y6554[(F!1*"<M53A"8%@H)D5$.C<X
M0"PR(4$Y)C%=.C8Y13LG+44B0$14*"9%3CDF-5@H)E55"DT[(F!/-U19.#4F
M750X-E$B/C<Q13Q2(44^)BU(*"<M5#M7*44H)R%//"(A13XF+4@H)R%//&!(
M*3E7+4$*33U&-$`[-B54/$9%6"@F14X]1C52/29503TG*4D^(B%#.U990S@W
M,$`L(EA5*"<M13TF/5(X-T1`+")@4`I-*",P0"Q"(5([5E%,*"<I13A7,48Z
M-E%,*"8]4CDW+50[5RE%(D!%6R(S8$`L,B$_,T5!(SHF)4X[1C5,"DT\4F!1
M*"<M53A'3"HB,$0I-U19.#0G*4\X5"52/$8E62@F-5@X5D!`.58U5"@F-5@Y
M-BPJ(C!$*3LF-4X*33E7,4@H)5TN-B4Q3STF)4PP1T54.3<L0#DW04,Z(B%3
M/38H0"M572XV)3%//28E3#!'150Y-RQ`.3=!0PI-.B(A4STF75(Y-U5&.U<H
M*B(P13\S14$T.U<Q03LD*5D])C53*"-@0#LF-5LY-T%)/2=523E`2"D_-E%/
M"DT[5V!`*U5=+C8E(5([5BTA/$<I03XR8%4H)B52/$8E62@F,44Y0$E=-U5=
M+C8F*40Y-C@J*U8M3SLF75(*33HV54$Y5C5;-U19.#$F72D[-B5'.31=4#\U
M73\S14%".28U1B)"74$[)R%(.#9%33@V/44^4R1`.#8Q1`I-*"5=+C8D,4\R
M-E5!.58U+SPG540Y-C@J*3(U)3M&,20[5BU5.S8U3CU@2"HY5RU!/48T*B@B
M73\W5%DX"DTX1B53.39503TG*4D^(B%-.#<Q4CHW0$`X5S52/$8U3CTF54$]
M)RE)/B(A1#DV."HY5RE%/%<Q3SQ&-"H*32DR-24[1C$P/$9=3#M6/"HI,C4B
M.38]23M%+44])S50(D)=3SU&)4PH)TPJ*")@0"@G,5(X-EE3.R8E5`I-.3(A
M4SA6)4PY,B%..3<]4#@W,4@H(V!.+3)@4"M#-$`L(EA5*"-@0"Q3.%`H)B52
M.%!)72@F,44Y0F!/"DT[)D5..3(A6R)"8$`H(B%-.U<Y13TF7$`\1E%).T8U
M5#M2(5,])RE/.E8T*C\R(40Y-CA`*U<M13TG-5`*32@G3"HH(F!`*"<M13TF
M44D[1C57.C8Q5#HB(5,Y-S%,.C9913A6)5`H)RU%/29123M&-4H[5D5.*"8]
M4PI-.#<Y12)'5$`Y)C5&*")=03Q'*4\]4B%;(D)@0"@B(4XY-SU0.#<Q2"@F
M54\]1C54.U(A1#TW8$`\1EU4"DTX-S%%*")442Q28%8H)RE,.C9913TF7$`M
M(F!-+4(A4CLF14XY-S%/*")45"@B5%8H)RE,.C9913TF7$`*33A644\\5C50
M.#<Q2"@F/5,X-SE%*"-@0#Q6-50[)D5..39)3SHV6$`\5S%2.U9-12@F/5(Y
M-RU4.U<I10I-*"8Y23LF4$`[1C5'*"<I3STF)50Y,$E=*"8Q13E`2$4I-#5.
M.24M13TG-5`B0V!`+")@5RXS*$`L,V!0"DTN(B%2.38M5#A644D\8$A1+C,L
M0"TC.%,H(RQ9*",H5RM#-$`\1C5#/28M3#HW8"HL,T13*",P5BQ28%,*32XR
M8%(M4EA5*"<I13A7,4,[)D50(D-@0"PB8%(H)RU%/2<U4")#+%DK0RA8+3,\
M4"U"8%(M4V!.+4,D50I-+%,T5B@G,5(X-EE3.R8E5#DP2%`K0SQ1+2,H6"U"
M8%`K0SA1+3,L6"TR(5,X5B5,.3!(4"@G+44])CU2"DTX-T0J+#(A4SDW,4$[
M)R%(.#!)1SQ6)58Y,$E..3<]4#@W,4@B1RU9/%<Q13LV,4DX5S`J.$8U1SHV
M6"H*32Q#*%4H(RQ2+2)@4BU#8$`L4RQ7*"<M13TF*4([5T`J+$,H52@C+%,M
M4B%-.U<Y13TF7"HL,F!0*"<I3`I-.C9913TF7"HL,F!0*"<I3#HV644])EPJ
M+#)@32PR(5([)D5..3<Q3R)#)$`L(B%2.R9%3CDW,4\B0V!`"DTK,R1`/$91
M23M&-50[4$A1*")442@G*4PZ-EE%/29<*BPR8$TL,B%2.R9%3CDW,4\B0R1`
M*S,D0#Q&44D*33M&-50[4$A0*")442@G*4PZ-EE%/29<*BPR8%`H)RE,.C99
M13TF7"HL(F!-+#(A4CLF14XY-S%/(D-@0`I-*S,D0#Q&44D[1C54.U!(42@C
M8$`\1E%).T8U5#M02%`H(E11*"<I3#HV644])EPJ+#)@4"@G*4PZ-EE%"DT]
M)EPJ+")@32PR(5([)D5..3<Q3R)#)$`L(B%2.R9%3CDW,4\B0V!`*S,D0#Q&
M44D[1C54.U!(42@C8$`*33Q&44D[1C54.U!(42@C8$`\1E%).T8U5#M02%`H
M(E11*"<I3#HV644])EPJ+#)@4"@G*4PZ-EE%/29<*@I-+#)@4"@G*4PZ-EE%
M/29<*BPR8%`H)RE,.C9913TF7"HL,F!0*"<I3#HV644])EPJ+#)@32PR(5([
M)D5."DTY-S%/(D,D0"PB(5([)D5..3<Q3R)#)$`L(B%2.R9%3CDW,4\B0R1`
M+"(A4CLF14XY-S%/(D,D0"PB(5(*33LF14XY-S%/(D,D0"PB(5([)D5..3<Q
M3R)#)$`L(B%2.R9%3CDW,4\B0V!`+#(A4CLF14XY-S%/(D,D0`I-+"(A4CLF
M14XY-S%/(D-@0"PR(5([)D5..3<Q3R)#)$`L(B%2.R9%3CDW,4\B0V!`+#(A
M4CLF14XY-S%/"DTB0V!`+#(A4CLF14XY-S%/(D,D0"PB(5([)D5..3<Q3R)#
M8$`L,B%2.R9%3CDW,4\B0R1`+#(A4CLF14X*33DW,4\B0V!`+#(A4CLF14XY
M-S%/(D,D0"PB(5([)D5..3<Q3R)#8$`L,B%2.R9%3CDW,4\B0R1`+#(A4@I-
M.R9%3CDW,4\B0R1`+#(A4CLF14XY-S%/(D,D0"PR(5([)D5..3<Q3R)#)$`L
M(B%2.R9%3CDW,4\B0V!`"DTL,B%2.R9%3CDW,4\B0R1`+"(A4CLF14XY-S%/
M(D,D0"PB(5([)D5..3<Q3R)&-4XY8$E3/2<I3SI6-"H*33E7*44\5S%//$8T
M*CE7*44\5S%//$8T*BPB8%`H(V!.+3(A4SDW,54\8$E'/%8E5CDP2%`K0RQ3
M+%,L4PI-+%(A4SDW,4<\1B59(D,D0#Q6-50X-E%0.B8D*BTR8%<H(RA0+4)@
M5"U30$`[5SE!.R(A1CHV44PB1CU2"DTY-RU4.U<I12)#8$`\5C54.5<I03XP
M2%$H)RU%/28E3#PF04$B0S1`+5)@4BPC.$`M(SQ8*"9=5C@V4$`*33LV)50\
M1D58*"8Q13E&)54[)S%-.#<Q4CHW0$`\5C54.S8E5#Q&15@H)RU4/$9=2SDP
M24<\1C53/29=4@I-.3!(4"@C8$`L(EA5*"<M13TG-5`B1CU3.#<Y12)#8$XL
M4RQ3+%,L4RQ2(5,Y-S%'/$8E62)#)$`\5C54"DTX-E%0.B8D*BTR8%<H(RA1
M+2)@5"U3/$`[5SE!.R(A1CHV44PB1CU2.3<M5#M7*44B0V!`/%8U5#E7*4$*
M33XP2%$H)RU%/28E3#PF04$B0S1`+5)@4BPS,$`M(SQ7*"9=5C@V4$`[-B54
M/$9%6"@F,44Y1B55.R<Q30I-.#<Q4CHW0$`\5C54.S8E5#Q&15@H)RU4/$9=
M2SDP24<\1C53/29=4CDP2%`H)RU%/28]4C@W1"HL(EA3"DTL4RQ3+%,L0#Q6
M-50Y5RE!/C!)1SQ6)58Y,$A0*"-@0"U31%(H(R10+"-`0#Q&-4,])BU,.C=@
M*C93)$`*22PB8%`H(E11*"-@0"PS8%`N)51`.%9=3CA6)50B1CU2.3<M5#M7
M*44B0C1%-2<I03HV444\0$@J"F`*?0JL?5QP87)D7'1X-3(P7'1X,3`V,%QT
M>#$V,#!<='@R,3(P7'1X,C8V,%QT>#,R,#!<='@S-S(P7'1X-#(V,%QT>#0X
M,#!<='@U,S(P7&8P7&(P7&DP7'5L;F]N95QF<S(T7&9C,%QC9C`@+B!7:'D@
M96UA:6P@=G,N(&$@<&]S=#\@22!F:6=U<F5D("AP97)H87!S(&EN8V]R<F5C
M=&QY*2!T:&%T('1H:7,@<W5B:F5C="!W87,L('=E;&PL(&9A:7)L>2!S=6)J
M96-T:79E(&%N9"!T96YD<R!T;R!B92!R96QI9V5O=7,@:6X@;F%T=7)E+B!4
M:&%T(&ES+"!P96]P;&4@=&5N9"!T;R!S=')O;F=L>2!H;VQD(&]P:6YI;VYS
M(&%B;W5T(&AO=R!T;R!L87EO=70@<V]F='=A<F4N(%1H:7,@:7,@97-P96-I
M86QL>2!T<G5E('=H96X@>6]U(&-O;&QE8W0@82!T86QL96YT960@9W)O=7`@
M;V8@<&5O<&QE('=H;R!A;&P@:&%V92!S=6-C965D960@:6X@<&%S="!V96YT
M=7)E<R!A;F0@=VES:"!T;R!I;G-T:6QL('1H96ER(&5X<&5R:65N8V4@:6YT
M;R!T:&4@9W)O=7`N($DG=F4@<V5E;B!P96]P;&4@*&UY<V5L9B!I;F-L=61E
M9"D@9V\@=&\@:7)R871I;VYA;"!L96YG=&AS('1O('-U<'!O<G0@=&AE:7(@
M<&]S:71I;VYS+B!3;RP@22!F96QT($DG9"!R97-P;VYD('1O('EO=7(@8VAA
M;&QE;F=E('=I=&AO=70@:6YS:6=H=&EN9R!A(&IA:&%D+EP*7`I;+BXN75P*
M"EQP87)D7'1X,3$R,%QT>#$V.#!<='@R,C0P7'1X,C@P,%QT>#,S-C!<='@S
M.3(P7'1X-#0X,%QT>#4P-#!<='@U-C`P7'1X-C$R,%QF,EQF<S(X7&QI,S8P
M7&9C,5QC9C$@270G;&P@<&]R="!E87-I;'D@=&\@979E<GD@3F585%-415`@
M<W5P<&]R=&5D('!L871F;W)MT&%N9"!T:&%T)W,@86QL($D@8V%R92!A8F]U
M="X@($]T:&5R('!R;V=R86UM97)S(&UA>2!N;W0@8F4@87,@;'5C:WDL('1H
M;W5G:"P@86YD(&UA>2!N;W0@:&%V92!T:&%T(&QU>'5R>2Y<"@I<<&%R9%QT
M>#4R,%QT>#$P-C!<='@Q-C`P7'1X,C$R,%QT>#(V-C!<='@S,C`P7'1X,S<R
M,%QT>#0R-C!<='@T.#`P7'1X-3,R,%QF,%QF<S(T7&9C,%QC9C`@7`I3:6=H
M+BXN($UO<W0@;V8@=7,@:6X@=&AE(")296%L(%=O<FQD(B`H=&TI(&1O;B=T
M(&AA=F4@=&AA="!L=7AU<GDN($EN(&9A8W0L(&UO<W0@8G5S:6YE<W,@8V%S
M97,@9F]R(&UA:VEN9R!M;VYE>2!C86YN;W0@8V]U;G0@;VX@3F585"`H5U`L
M($QO='5S+"!";W-S+"!!9&]B92P@971C*2P@;W(@=&AE(&)U<VEN97-S('!L
M86YS(&%R92!E>'1R96UE;'D@;W!T:6UI<W1I8R!W:71H;W5T(&UU8V@@:&%R
M9"!D871A("A!<'!3;V9T*2P@;W(@87)E(&1E<W1I;F5D('1O(')E;6%I;B!S
M;6%L;"!P;&%Y97)S("A-971R;W-O9G0L(%-T;VYE($1E<VEG;BDN($EF($YE
M6%0@8V%N(&=E="!T:&5I<B!A8W0@=&]G971H97(@9F]R('1H92!C<F]S<RUP
M;&%T9F]R;2!S=7!P;W)T(&UA;GD@;V8@=7,@=VEL;"!B92!R96%D>2!A;F0@
M=VEL;&EN9R!T;R!R:61E('1H92!B;W<M=V%V92X@4V\@9F%R+"!.95A4(&QA
M9W,@:6X@=&AA="!A<F5A("X@2&5N8V4L('=E(&QO;VL@870@;6%R:V5T<R!L
M:6ME(%=I;F1O>F4@*'1M*2Y<"EP*"EQF8S%<8V8Q(%LN+BY=7`H*7&9C,%QC
M9C`@7`H*7&(@22=M(&%G86EN<W0@2'5N9V%R:6%N(&YO=&%T:6]N+B`@22=M
M(&%L<V\@;F]T(&EN8VQI;F5D('1O(&UA:V4@86YY(')U;&5S(&=O=F5R;FEN
M9R!I;G-T86YC92!V87)I86)L92!N86UE<RP@8G5T(&-L87-S(&YA;65S(&%R
M92!C;W9E<F5D("AS964@8V]M;65N="!A8F]V92DN7`H*7&(P(%P*0E17.B!C
M;VUP;&5T92!(=6YG87)I86X@8V]V97)S('9A<FEA8FQE+"!F=6YC=&EO;BP@
M;65T:&]D+"!C;&%S<RP@86YD(&9I;&4@;F%M97,N($EN('-H;W)T+"!E=F5R
M>71H:6YG('1H870@>6]U)V0@;F5V97(@=V%N="!T;R!S964@2'5N9V%R:6%N
M(&]N(#HM*2Y<"EP*"EQF8S%<8V8Q(%LN+BY=7`H*7&)<9F,P7&-F,"!<"D%L
M<V\@;F]T:6-E('1H92!C;&%R:69I8V%T:6]N(&%T('1H92!E;F0@;V8@=&AE
M('!A<F%G<F%P:"!R96=A<F1I;F<@;&]C86QI>F5D($Y)0B=S("A)(&AA9"!O
M;F4@<&5R<V]N(&5M86EL(&UE(&EN(&1I<V%G<F5E;65N="P@87)G=6EN9R!T
M:&%T('1H97D@=V%N=&5D(&QO8V%L:7IE9"!.24(@;F%M97,@:6YS=&5A9"DN
M7`H@7`H*7&(P(%1H92!O;F4@=VEN9&]W+7!E<BUN:6(@:7,@8V]N<VED97)E
M9"!P<F]P97(@3F585"!)0B!E='1I<75E=&4N($ET(&%L<V\@=V%S(&]R:6=I
M;F%L;'D@<F5L871E9"!T;R!E87)L>2!P97)F;W)M86YC92!C;VYS:61E<F%T
M:6]N<R`H:2YE+B!W86YT:6YG('1O(&QA>GDM;&]A9"!A<R!M=6-H(&%S('!O
M<W-I8FQE*2X@06X@86YT:2UE>&%M<&QE(&]F('1H:7,@*$EF($D@<F5M96UB
M97(@8V]R<F5C=&QY*2!I<R!7;W)D4&5R9F5C="P@=VAI8V@@;&]A9',@<VQO
M=VQY(&)E8V%U<V4@;75L=&EP;&4@=VEN9&]W<R]P86YE;',@:6X@82!S:6YG
M;&4@;FEB("AI;B!W:&EC:"!T:&4@87)C:&EV960@;V)J96-T<R!W:6QL(&)E
M(&=E='1I;F<@82!R96%D.B!A;F0@87=A:V4@8V%L;"DN($D@;6EG:'0@861D
M('1H870@=&AE<F4@:&%S(&)E96X@9&ES8W5S<VEO;B!A8F]U="!N:6(@;&]A
M9&EN9R!A;F0@,RXP('=H:6-H(&UI9VAT('1E;F0@=&\@<F5V97)S92!.95A4
M)W,@;W)I9VEN86P@<&]S:71I;VX@*&UO<W0@;V8@=&AE(#,N,"!S;&]W+61O
M=VX@:7,@<F5L871E9"!T;R!N:6(O9&ES:R]M96UO<GD@<W1U9F8I+B!!;'1H
M;W5G:"!T:&4@<W1A;F-E(&AA<R!N;W0@8VAA;F=E9"P@:&]P969U;&QY('1H
M:7,@9&5M;VYS=')A=&5S('1H870@=&AE(&-O;G9E;G1I;VX@<F]S92!F<F]M
M(&%N('5N9&5R;'EI;F<@:6YT96YT.B!P97)F;W)F;W)M86YC92P@=VAI8V@@
M8V%N(&-H86YG92!H;W<@=&AI;F=S(&=E="!I;7!L96UE;G1E9"Y<"EP*22!T
M:&EN:R!T:&%T)W,@86QS;R!M>2!P;W-I=&EO;B!O;B!S=&%N9&%R9',Z(&$@
M<W1A;F1A<F0@9F]R('1H92!S86ME(&]F(&$@<W1A;F1A<F0@:7,@;F5A<FQY
M(&%K:6X@=&\@9&]G;6$N($$@<W1A;F1A<F0@:6X@86YD(&]F(&ET<V5L9B!I
M<R!T:&5R92!T;R!S97)V92!A('!U<G!O<V4@;W(@<V5T(&]F('!U<G!O<V5S
M+B!4:&5S92!P=7)P;W-E<R!W:6QL(&QI:V5L>2!V87)Y(&1E<&5N9&EN9R!O
M;B!T:&4@96YV:7)O;FUE;G0@;VYE(&9I;F1S('1H96US96QV97,@:6XL(&%N
M9"!S;R!T:&4@<W1A;F1A<F1S('=I;&P@8F4@;V8@:6YC<F5A<V5D('-E<G9I
M8V4@:68@=&AE>2!C86X@861A<'0@=&\@86EM<R!O9B!T:&4@<')E<V5N="!A
M<'!L:6-A=&EO;B`H8G)O860@;65A;FEN9RDN7`I<"DD@<&5R8V5I=F4@=&AA
M="!Y;W4G<F4@871T96UP=&EN9R!T;R!I;7!L96UE;G0@82!S970@;V8@<G5L
M97,@*'-T86YD87)D<RD@=&AA="!S97)V92!Y;W5R(&)E<W0@=71I;&ET>2X@
M24U(3RP@9FEN9"!O=70@=VAA="!G;V%L<R!Y;W4G<F4@=')Y:6YG('1O(&%C
M:&EE=F4L('!R:6]R:71I>F4@=&AE;2P@86YD('1H96X@<V5E(&AO=R!T:&5Y
M(&-O9&EF>2!I;G1O(&$@<G5L92US970N($UY(&5X<&5R:65N8V4@:7,@=&AA
M="!Y;W4G;&P@96YD('5P('=I=&@@82!D:69F97)E;G0@<V5T(&]F('-T86YD
M87)D<R`Z+2DN7`H*7&(@7`I)('!R97-U;64@>6]U(&UE86XZ(")S;VUE('!A
M;F5L<R]W:6YD;W=S(&EN('-O;64@3DE")W,@9&]N)W0@:&%V92!T:71L97,B
M+B`@37D@<75E<W1I;VX@=V]U;&0@=&AE;B!B93H@=VAY(&1O97-N)W0@=&AE
M('!A;F5L+W=I;F1O=R!H879E(&$@=&ET;&4_("!7:&%T('=O=6QD(&ET(&AU
M<G0@=&\@<'5T(&$@=&ET;&4@:6X_("!.;W1E('1H870@=&AE(')U;&4@22!G
M879E(&1O97,@9VEV92!Y;W4@<V]M92!D:7-C<F5T:6]N(&EN('1H92!C:&]I
M8V4@;V8@=&AE('1I=&QE.EP*7`H*7&(P($]F=&5N('1I;65S(&YI8G,@87)E
M('5S960@=&\@8V]L;&5C=&EO;B!I;6%G97,@*&%S(&EN('!A<G1S(&]F(%=-
M*2P@;W(@8V]N=')O;',@*&-O;6UO;B!F;W(@8W5S=&]M('=I;F1O=W,I+"!O
M<B!I;G-E=',@=&\@;W1H97(@<&%N96QS("AI+F4N(&-U<W1O;6EZ:6YG($YE
M6%0G<R!P<FEN="!P86YE;"P@3F585"=S('5S92!O9B!S=6)P86YE;',@:6X@
M=&AE($-O;&]R('!I8VME<BDN(%1H97-E('1I=&QE<R!N979E<B!G970@9&ES
M<&QA>65D(&%N9"!O9G1E;B!A<F4@;75L=&DM<'5R<&]S92Y<"@I<8B!<"@I<
M8C`@6RXN+EU<"G)E.B!N979E<B!T;W5C:&EN9R!A='1R:6)U=&5S+VEN<W1A
M;F-E('9A<G,N+BY<"EP*270@9&5P96YD<R!O;B!H;W<@(G!U<FES="(@;W(@
M=&AE;W)E=&EC86P@=G,N('!R86-T:6-A;"!Y;W4@=V%N="!T;R!G970N(%=I
M=&AI;B!T:&4@<V%M92!M;V1U;&4O8VQA<W,@:70@;6%Y(&)E(&%C8V5P=&%B
M;&4@=&\@<F5F97(@=&\@=&AE(&EN<W1A;F-E('9A<FEA8FQE('9S+B!T:&4@
M;65T:&]D+"!E<W!E8VEA;&QY('=H97)E('-P965D(&ES(&-O;F-E<FYE9"Y<
M"EP*"EQB($EF(&ET)W,@=VET:&EN('1H92!S86UE(&EN<W1A;F-E(&]F(&$@
M8VQA<W,@*&DN92XL('1H92!S86UE(")M;V1U;&4B/]!W:&%T(&1O('EO=2!M
M96%N(&)Y(&$@(FUO9'5L92(L(&%N>7=A>3\I+"!T:&4@:6YS=&%N8V4@=F%R
M:6%B;&5S(&]F(&$@9VEV96X@:6YS=&%N8V4@;V8@82!C;&%S<R!A<F4@86-C
M97-S:6)L92!T;R!A;&P@;65T:&]D<R!O9B!T:&%T(&EN<W1A;F-E(&%N>7=A
M>2P@<F5G87)D;&5S<R!O9B!T:&4@=F%R:6%B;&5S)R!C;&%S<VEF:6-A=&EO
M;B`H<'5B;&EC+"!P<F]T96-T960L(&]R('!R:79A=&4IT'-O(&EN('1H:7,@
M8V%S92!T:&5R92!W;W5L9"!B92!N;R!A9'9A;G1A9V4@=&\@9&5C;&%R:6YG
M(&%N>2!O9B!T:&5M('!U8FQI8RY<"EP*7`I"=70L(&EF('EO=2!A<F4@=&%L
M:VEN9R!A8F]U="!D:69F97)E;G0@:6YS=&%N8V5S(&]F('1H92!S86UE(&-L
M87-ST'=H870@<F5L979A;F-E(&1O97,@=&AE(&9A8W0@=&AA="!T:&5Y(&%R
M92!O9B!T:&4@<V%M92!C;&%S<R!H879E/R`@22!G=65S<R!I9B!I="!E>&5C
M=71E<R!F87-T97(L('1H96X@=V4@<VAO=6QD(&%L;"!J=7-T(&=O(&)A8VL@
M=&\@:&%V:6YG(&=L;V)A;"!V87)I86)L97,@9F]R(&5V97)Y=&AI;F<@*&%L
M82!7:6YD;WIE*3]<"EP*"EQB,"!!(&UO9'5L92!I;B!/8FI#(&ES(&%N>2`J
M+FT@9FEL92X@4W1R:6-T;'D@<W!E86MI;F<@22=L;"!M96%N('1O(&EN=&5R
M<')E="!T:&4@86)O=F4@87,@=7-I;F<@86X@:6YS=&%N8V4@=F%R:6%B;&4@
M=VET:&EN('1H92!C;VYF:6YE<R!O9B!T:&4@;W)I9VEN86P@8VQA<W,@8V%T
M96=O<GD@86YD('=I=&AI;B!A('-I;F=L92!F:6QE+B!3;RP@22=M(&YO="!A
M9'9O8V%T:6YG(&1I<F5C=&QY('5S:6YG(&%N(&EN<W1A;F-E('9A<FEA8FQE
M(&EN(&$@<W5B8VQA<W,@;W(@8V%T96=O<GDL(&]N;'D@=VET:&EN('1H92!B
M;W5N9',@;V8@:70G<R!C;&%S<R!I;7!L96UE;G1A=&EO;BP@86YD('1H96X@
M;VYL>2!F;W(@<F5A<V]N<R!O9B!S<&5E9"X@3W1H97)W:7-E('EO=2!R:7-K
M('-K:7)T:6YG('1H92!B96YE9FET<R!O9B!/3U`N7`I<"ELN+BY=7`H*7&(@
M7`I))W9E(&)E96X@9FEN9&EN9R!T:&%T('1H92!T:&ER9"!C:&5C:VEN9R!Y
M;W4@;65N=&EO;B`H:6YV87)I96YT<RD@:7,@97-P96-I86QL>2!I;7!O<G1A
M;G0@=VET:"!$:7-T<FEB=71E9"!/8FIE8W1S+B`@5&AE<V4@='EP97,@;V8@
M;V)J96-T<R!S965M('1O(&5I=&AE<B!N965D('-T871E+6UA8VAI;F4@;&]G
M:6,@:6YS:61E(&]F('1H96TL(&]R(&5L<V4@<')O=FED92!S;VUE('-O<G0@
M;V8@;75T97@M;&]C:VEN9R!M971H;V1S+B`@06YD(&EN(&%N>2!C87-E+"!T
M;R!I;7!L96UE;G0@<W5C:"!M96-H86YI<VUS+"!T:&4@;V)J96-T(&UU<W0@
M(G)E;65M8F5R(B!W:&\@<V5N="!E86-H(&UE<W-A9V70<V\@(G-T871E(B!I
M;F9O<FUA=&EO;B!I<R!Q=6ET92!C;VUM;VXN7`H*7&(P(%P*1&ES=')I8G5T
M960@3V)J96-T<R!I<R!P<F]B86)L>2!A(&=O;V0@<&QA8V4@=&\@87!P;'D@
M=&AE(&EN=F%R:65N="!C:&5C:VEN9RY<"@I<8B!<"@I<8C`@+BXN7`I<"@EP
M<F]T;V-O;',@87)E(&-O;VPL(&)U="!N;W0@<W5P<&]R=&5D(&]U='-I9&4@
M3F585"`Z+2A<"EP*7`H*7&(@(%-O/R`Z+2D@7`H*7&(P(%P*06-T=6%L;'DL
M('=E('5S92!C871E9V]R:65S+"!B=70@:70G<R!Y970@86YO=&AE<B!T:&EN
M9R!T:&%T(&UA:V5S(&QI9F4@:&5L;"!P;W)T:6YG('1H:6YG<R!T;R!O=&AE
M<B!P;&%T9F]R;7,@.BTH7`I<"EP*"EQF,2!<"@I<8B!4:&%N:RUY;W4@9F]R
M('EO=7(@<F5S<&]N<V4N("!3:&]U;&0@=V4@<W1A<G0@<VAA<FEN9R!O=7(@
M9&ES8W5S<VEO;B!W:71H('1H92!N970_7`I<"@I<9C!<8C!<9F,Q7&-F,2!)
M9B!Y;W4G9"!L:6ME+"!P97)H87!S('EO=2!C86X@<&]S="!A('-U;6UA<GDN
M7`I<"G)E9V%R9',L7`I<"DME=FEN"EQP87)D7'1X,3$U,EQT>#(S,#1<='@S
M-#4V7'1X-#8P.%QT>#4W-C!<='@V.3$R7'1X.#`V-%QT>#DR,39<='@Q,#,V
M.%QT>#$Q-3(P7&8Q7&9C,%QC9C`@7`I<"BTM7`I.979I;B!0<F%T="P@1&EG
M:71A;"!496-H;F]L;V=Y+"!);G0G;"`@("!/<F5M+"!5=%P*3F585&UA:6P@
M<')E9F5R<F5D+"!B=70@3TY,62!A="!M>2!214%,(&5M86EL(&%D9')E<W,Z
=(&YE=FEN0&1T:6YT+F1T:6YT+F-O;5P*7`H*?0I,
`
--
---
root root@dtint.dtint.com
Digital Technology Int. (801)226-2984
500 W. 1200 South, Orem UT, 84057 FAX (801) 226-8438
Re: Coding Rules (NOT rtf)
Author: nevin
Date: Thu, 19 Nov 1992 00:08
Date: Thu, 19 Nov 1992 00:08
57 lines
3547 bytes
3547 bytes
>> It'll port easily to every NeXTSTEP supported platform and that's all I care >> about. Other programmers may not be as lucky, though, and may not have that >> luxury. > Sigh... Most of us in the "Real World" (tm) don't have that luxury. In fact, > most business cases for making money cannot count on NeXT (WP, Lotus, Boss, > Adobe, etc), or the business plans are extremely optimistic without much hard > data (AppSoft), or are destined to remain small players (Metrosoft, Stone > Design). If NeXT can get their act together for the cross-platform support > many of us will be ready and willing to ride the bow-wave. So far, NeXT lags > in that area . Hence, we look at markets like Windoze (tm). I'm not so sure that the assursion that others "are destined to remain small players (Metrosoft, Stone Design)" will prove to be accurate. These companies that have committed whole heart and soul to the NeXT way of developing won't be as wrapped-up in cross-platform compatability issues (I'll bet that's why Virtuoso was so late). If NeXTSTEP really takes off, these "small player" companies will be the ones that are ahead. > The one window-per-nib is considered proper NeXT IB ettiquete. It also was > originally related to early performance considerations (i.e. wanting to > lazy-load as much as possible). An anti-example of this (If I remember > correctly) is WordPerfect, which loads slowly because multiple windows/panels > in a single nib (in which the archived objects will be getting a read: and > awake call). I might add that there has been discussion about nib loading and > 3.0 which might tend to reverse NeXT's original position (most of the 3.0 > slow-down is related to nib/disk/memory stuff). I've heard a slightly different story about the 3.0 slowdown, from an ex- NeXT employee. It was caused (according to him) by a generalization of things like "malloc(512)" to "malloc(sizeof(somesuch) * 4)" in order to better support new platforms (ala 486). >> I presume you mean: "some panels/windows in some NIB's don't have titles". >> My question would then be: why doesn't the panel/window have a title? >> What would it hurt to put a title in? Note that the rule I gave does >> give you some discretion in the choice of the title: > Often times nibs are used to collection images (as in parts of WM), or > controls (common for custom windows), or insets to other panels (i.e. > customizing NeXT's print panel, NeXT's use of subpanels in the Color picker). > These titles never get displayed and often are multi-purpose. Then the rule wouldn't apply. The language of the rule was written such that it only applies to NIB's with windows or panels. Or at least, that was my intent, and has been clarified in my latest version of the rules. -- Nevin Pratt, Digital Technology, Int'l Orem, Ut NeXTmail preferred, but ONLY at my REAL email address: nevin@dtint.dtint.com -- --- root root@dtint.dtint.com Digital Technology Int. (801)226-2984 500 W. 1200 South, Orem UT, 84057 FAX (801) 226-8438
Re: Coding Rules (NOT rtf)
Author: Doug DeJulio
Date: Thu, 19 Nov 1992 21:09
Date: Thu, 19 Nov 1992 21:09
16 lines
1202 bytes
1202 bytes
In article <1992Nov19.000858.26075@dtint.uucp> nevin@dtint.dtint.com writes: >> 3.0 which might tend to reverse NeXT's original position (most of the 3.0 >> slow-down is related to nib/disk/memory stuff). > > I've heard a slightly different story about the 3.0 slowdown, from an > ex-NeXT employee. It was caused (according to him) by a > generalization of things like "malloc(512)" to > "malloc(sizeof(somesuch) * 4)" in order to better support new > platforms (ala 486). That sort of construct is evaluated at compile-time, not at execute-time. So it would explain a slow-down in compiles, but not in general performance. -- Doug DeJulio ddj+@cmu.edu
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads